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