Add fair sharing worker choice strategy
[poolifier.git] / benchmarks / internal / bench.js
1 const Benchmark = require('benchmark')
2 const {
3 dynamicClusterTest,
4 dynamicClusterTestFairShare,
5 dynamicClusterTestLessRecentlyUsed
6 } = require('./cluster/dynamic')
7 const {
8 fixedClusterTest,
9 fixedClusterTestFairShare,
10 fixedClusterTestLessRecentlyUsed
11 } = require('./cluster/fixed')
12 const {
13 dynamicThreadTest,
14 dynamicThreadTestFairShare,
15 dynamicThreadTestLessRecentlyUsed
16 } = require('./thread/dynamic')
17 const {
18 fixedThreadTest,
19 fixedThreadTestFairShare,
20 fixedThreadTestLessRecentlyUsed
21 } = require('./thread/fixed')
22 const { LIST_FORMATTER } = require('./benchmark-utils')
23
24 const suite = new Benchmark.Suite('poolifier')
25
26 // Wait some seconds before start, pools need to load threads !!!
27 setTimeout(async () => {
28 test()
29 }, 3000)
30
31 async function test () {
32 // Add tests
33 suite
34 .add('Poolifier:Fixed:ThreadPool', async function () {
35 await fixedThreadTest()
36 })
37 .add('Poolifier:Fixed:ThreadPool:LessRecentlyUsed', async function () {
38 await fixedThreadTestLessRecentlyUsed()
39 })
40 .add('Poolifier:Fixed:ThreadPool:FairShare', async function () {
41 await fixedThreadTestFairShare()
42 })
43 .add('Poolifier:Dynamic:ThreadPool', async function () {
44 await dynamicThreadTest()
45 })
46 .add('Poolifier:Dynamic:ThreadPool:LessRecentlyUsed', async function () {
47 await dynamicThreadTestLessRecentlyUsed()
48 })
49 .add('Poolifier:Dynamic:ThreadPool:FairShare', async function () {
50 await dynamicThreadTestFairShare()
51 })
52 .add('Poolifier:Fixed:ClusterPool', async function () {
53 await fixedClusterTest()
54 })
55 .add('Poolifier:Fixed:ClusterPool:LessRecentlyUsed', async function () {
56 await fixedClusterTestLessRecentlyUsed()
57 })
58 .add('Poolifier:Fixed:ClusterPool:FairShare', async function () {
59 await fixedClusterTestFairShare()
60 })
61 .add('Poolifier:Dynamic:ClusterPool', async function () {
62 await dynamicClusterTest()
63 })
64 .add('Poolifier:Dynamic:ClusterPool:LessRecentlyUsed', async function () {
65 await dynamicClusterTestLessRecentlyUsed()
66 })
67 .add('Poolifier:Dynamic:ClusterPool:FairShare', async function () {
68 await dynamicClusterTestFairShare()
69 })
70 // Add listeners
71 .on('cycle', function (event) {
72 console.log(event.target.toString())
73 })
74 .on('complete', function () {
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()
81 })
82 .run({ async: true })
83 }