1 const Benchmark
= require('benchmark')
4 dynamicClusterTestFairShare
,
5 dynamicClusterTestLessRecentlyUsed
,
6 dynamicClusterTestWeightedRoundRobin
7 } = require('./cluster/dynamic')
10 fixedClusterTestFairShare
,
11 fixedClusterTestLessRecentlyUsed
,
12 fixedClusterTestWeightedRoundRobin
13 } = require('./cluster/fixed')
16 dynamicThreadTestFairShare
,
17 dynamicThreadTestLessRecentlyUsed
,
18 dynamicThreadTestWeightedRoundRobin
19 } = require('./thread/dynamic')
22 fixedThreadTestFairShare
,
23 fixedThreadTestLessRecentlyUsed
,
24 fixedThreadTestWeightedRoundRobin
25 } = require('./thread/fixed')
26 const { LIST_FORMATTER
} = require('./benchmark-utils')
28 const suite
= new Benchmark
.Suite('poolifier')
30 // Wait some seconds before start, pools need to load threads !!!
31 setTimeout(async () => {
35 async
function test () {
38 .add('Poolifier:Fixed:ThreadPool', async
function () {
39 await
fixedThreadTest()
41 .add('Poolifier:Fixed:ThreadPool:LessRecentlyUsed', async
function () {
42 await
fixedThreadTestLessRecentlyUsed()
44 .add('Poolifier:Fixed:ThreadPool:WeightedRoundRobin', async
function () {
45 await
fixedThreadTestWeightedRoundRobin()
47 .add('Poolifier:Fixed:ThreadPool:FairShare', async
function () {
48 await
fixedThreadTestFairShare()
50 .add('Poolifier:Dynamic:ThreadPool', async
function () {
51 await
dynamicThreadTest()
53 .add('Poolifier:Dynamic:ThreadPool:LessRecentlyUsed', async
function () {
54 await
dynamicThreadTestLessRecentlyUsed()
56 .add('Poolifier:Dynamic:ThreadPool:WeightedRoundRobin', async
function () {
57 await
dynamicThreadTestWeightedRoundRobin()
59 .add('Poolifier:Dynamic:ThreadPool:FairShare', async
function () {
60 await
dynamicThreadTestFairShare()
62 .add('Poolifier:Fixed:ClusterPool', async
function () {
63 await
fixedClusterTest()
65 .add('Poolifier:Fixed:ClusterPool:LessRecentlyUsed', async
function () {
66 await
fixedClusterTestLessRecentlyUsed()
68 .add('Poolifier:Fixed:ClusterPool:WeightedRoundRobin', async
function () {
69 await fixedClusterTestWeightedRoundRobin
71 .add('Poolifier:Fixed:ClusterPool:FairShare', async
function () {
72 await
fixedClusterTestFairShare()
74 .add('Poolifier:Dynamic:ClusterPool', async
function () {
75 await
dynamicClusterTest()
77 .add('Poolifier:Dynamic:ClusterPool:LessRecentlyUsed', async
function () {
78 await
dynamicClusterTestLessRecentlyUsed()
80 .add('Poolifier:Dynamic:ClusterPool:WeightedRoundRobin', async
function () {
81 await dynamicClusterTestWeightedRoundRobin
83 .add('Poolifier:Dynamic:ClusterPool:FairShare', async
function () {
84 await
dynamicClusterTestFairShare()
87 .on('cycle', function (event
) {
88 console
.log(event
.target
.toString())
90 .on('complete', function () {
93 LIST_FORMATTER
.format(this.filter('fastest').map('name'))
95 // eslint-disable-next-line no-process-exit