Add fair sharing worker choice strategy
[poolifier.git] / benchmarks / internal / bench.js
CommitLineData
57df5469 1const Benchmark = require('benchmark')
ff5e76e1
JB
2const {
3 dynamicClusterTest,
23ff945a 4 dynamicClusterTestFairShare,
ff5e76e1
JB
5 dynamicClusterTestLessRecentlyUsed
6} = require('./cluster/dynamic')
292ad316
JB
7const {
8 fixedClusterTest,
23ff945a 9 fixedClusterTestFairShare,
292ad316
JB
10 fixedClusterTestLessRecentlyUsed
11} = require('./cluster/fixed')
ff5e76e1
JB
12const {
13 dynamicThreadTest,
23ff945a 14 dynamicThreadTestFairShare,
ff5e76e1
JB
15 dynamicThreadTestLessRecentlyUsed
16} = require('./thread/dynamic')
292ad316
JB
17const {
18 fixedThreadTest,
23ff945a 19 fixedThreadTestFairShare,
292ad316
JB
20 fixedThreadTestLessRecentlyUsed
21} = require('./thread/fixed')
22const { LIST_FORMATTER } = require('./benchmark-utils')
325f50bc 23
ff5e76e1 24const suite = new Benchmark.Suite('poolifier')
57df5469 25
85a3f8a7 26// Wait some seconds before start, pools need to load threads !!!
57df5469 27setTimeout(async () => {
28 test()
29}, 3000)
30
106744f7 31async function test () {
85a3f8a7 32 // Add tests
cf9aa6c3 33 suite
292ad316 34 .add('Poolifier:Fixed:ThreadPool', async function () {
325f50bc
S
35 await fixedThreadTest()
36 })
292ad316
JB
37 .add('Poolifier:Fixed:ThreadPool:LessRecentlyUsed', async function () {
38 await fixedThreadTestLessRecentlyUsed()
39 })
23ff945a
JB
40 .add('Poolifier:Fixed:ThreadPool:FairShare', async function () {
41 await fixedThreadTestFairShare()
42 })
ff5e76e1 43 .add('Poolifier:Dynamic:ThreadPool', async function () {
325f50bc
S
44 await dynamicThreadTest()
45 })
ff5e76e1
JB
46 .add('Poolifier:Dynamic:ThreadPool:LessRecentlyUsed', async function () {
47 await dynamicThreadTestLessRecentlyUsed()
48 })
23ff945a
JB
49 .add('Poolifier:Dynamic:ThreadPool:FairShare', async function () {
50 await dynamicThreadTestFairShare()
51 })
292ad316 52 .add('Poolifier:Fixed:ClusterPool', async function () {
325f50bc 53 await fixedClusterTest()
cf9aa6c3 54 })
292ad316
JB
55 .add('Poolifier:Fixed:ClusterPool:LessRecentlyUsed', async function () {
56 await fixedClusterTestLessRecentlyUsed()
57 })
23ff945a
JB
58 .add('Poolifier:Fixed:ClusterPool:FairShare', async function () {
59 await fixedClusterTestFairShare()
60 })
ff5e76e1 61 .add('Poolifier:Dynamic:ClusterPool', async function () {
325f50bc 62 await dynamicClusterTest()
106744f7 63 })
ff5e76e1
JB
64 .add('Poolifier:Dynamic:ClusterPool:LessRecentlyUsed', async function () {
65 await dynamicClusterTestLessRecentlyUsed()
66 })
23ff945a
JB
67 .add('Poolifier:Dynamic:ClusterPool:FairShare', async function () {
68 await dynamicClusterTestFairShare()
69 })
85a3f8a7 70 // Add listeners
57df5469 71 .on('cycle', function (event) {
583a27ce 72 console.log(event.target.toString())
57df5469 73 })
74 .on('complete', function () {
583a27ce
JB
75 console.log(
76 'Fastest is ' +
77 LIST_FORMATTER.format(this.filter('fastest').map('name'))
78 )
79 // eslint-disable-next-line no-process-exit
80 process.exit()
57df5469 81 })
292ad316 82 .run({ async: true })
57df5469 83}