1 const Benchmark
= require('benchmark')
4 dynamicClusterTestFairShare
,
5 dynamicClusterTestLessRecentlyUsed
6 } = require('./cluster/dynamic')
9 fixedClusterTestFairShare
,
10 fixedClusterTestLessRecentlyUsed
11 } = require('./cluster/fixed')
14 dynamicThreadTestFairShare
,
15 dynamicThreadTestLessRecentlyUsed
16 } = require('./thread/dynamic')
19 fixedThreadTestFairShare
,
20 fixedThreadTestLessRecentlyUsed
21 } = require('./thread/fixed')
22 const { LIST_FORMATTER
} = require('./benchmark-utils')
24 const suite
= new Benchmark
.Suite('poolifier')
26 // Wait some seconds before start, pools need to load threads !!!
27 setTimeout(async () => {
31 async
function test () {
34 .add('Poolifier:Fixed:ThreadPool', async
function () {
35 await
fixedThreadTest()
37 .add('Poolifier:Fixed:ThreadPool:LessRecentlyUsed', async
function () {
38 await
fixedThreadTestLessRecentlyUsed()
40 .add('Poolifier:Fixed:ThreadPool:FairShare', async
function () {
41 await
fixedThreadTestFairShare()
43 .add('Poolifier:Dynamic:ThreadPool', async
function () {
44 await
dynamicThreadTest()
46 .add('Poolifier:Dynamic:ThreadPool:LessRecentlyUsed', async
function () {
47 await
dynamicThreadTestLessRecentlyUsed()
49 .add('Poolifier:Dynamic:ThreadPool:FairShare', async
function () {
50 await
dynamicThreadTestFairShare()
52 .add('Poolifier:Fixed:ClusterPool', async
function () {
53 await
fixedClusterTest()
55 .add('Poolifier:Fixed:ClusterPool:LessRecentlyUsed', async
function () {
56 await
fixedClusterTestLessRecentlyUsed()
58 .add('Poolifier:Fixed:ClusterPool:FairShare', async
function () {
59 await
fixedClusterTestFairShare()
61 .add('Poolifier:Dynamic:ClusterPool', async
function () {
62 await
dynamicClusterTest()
64 .add('Poolifier:Dynamic:ClusterPool:LessRecentlyUsed', async
function () {
65 await
dynamicClusterTestLessRecentlyUsed()
67 .add('Poolifier:Dynamic:ClusterPool:FairShare', async
function () {
68 await
dynamicClusterTestFairShare()
71 .on('cycle', function (event
) {
72 console
.log(event
.target
.toString())
74 .on('complete', function () {
77 LIST_FORMATTER
.format(this.filter('fastest').map('name'))
79 // eslint-disable-next-line no-process-exit