X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=benchmarks%2Finternal%2Fbench.js;h=e88f40cf9334f5daf0ed32fb1c525c9939d7ede5;hb=116609a3a74b68ba940d3a0129104d4eae115ed3;hp=bdb2f614a780e0f78f86b4ff2a2063c65ce283b7;hpb=292ad316a2815762f2e4a822383f1aef5ae49774;p=poolifier.git diff --git a/benchmarks/internal/bench.js b/benchmarks/internal/bench.js index bdb2f614..e88f40cf 100644 --- a/benchmarks/internal/bench.js +++ b/benchmarks/internal/bench.js @@ -1,67 +1,108 @@ -const Benchmark = require('benchmark') +const Benchmark = require('benny') const { dynamicClusterTest, - dynamicClusterTestLessRecentlyUsed + dynamicClusterTestFairShare, + dynamicClusterTestLessRecentlyUsed, + dynamicClusterTestWeightedRoundRobin } = require('./cluster/dynamic') const { fixedClusterTest, - fixedClusterTestLessRecentlyUsed + fixedClusterTestFairShare, + fixedClusterTestLessRecentlyUsed, + fixedClusterTestWeightedRoundRobin } = require('./cluster/fixed') const { dynamicThreadTest, - dynamicThreadTestLessRecentlyUsed + dynamicThreadTestFairShare, + dynamicThreadTestLessRecentlyUsed, + dynamicThreadTestWeightedRoundRobin } = require('./thread/dynamic') const { fixedThreadTest, - fixedThreadTestLessRecentlyUsed + fixedThreadTestFairShare, + fixedThreadTestLessRecentlyUsed, + fixedThreadTestWeightedRoundRobin } = require('./thread/fixed') -const { LIST_FORMATTER } = require('./benchmark-utils') -const suite = new Benchmark.Suite('poolifier') +const resultsFile = 'poolifier' +const resultsFolder = 'benchmarks/internal/results' -// Wait some seconds before start, pools need to load threads !!! -setTimeout(async () => { - test() -}, 3000) - -async function test () { - // Add tests - suite - .add('Poolifier:Fixed:ThreadPool', async function () { - await fixedThreadTest() - }) - .add('Poolifier:Fixed:ThreadPool:LessRecentlyUsed', async function () { - await fixedThreadTestLessRecentlyUsed() - }) - .add('Poolifier:Dynamic:ThreadPool', async function () { - await dynamicThreadTest() - }) - .add('Poolifier:Dynamic:ThreadPool:LessRecentlyUsed', async function () { - await dynamicThreadTestLessRecentlyUsed() - }) - .add('Poolifier:Fixed:ClusterPool', async function () { - await fixedClusterTest() - }) - .add('Poolifier:Fixed:ClusterPool:LessRecentlyUsed', async function () { - await fixedClusterTestLessRecentlyUsed() - }) - .add('Poolifier:Dynamic:ClusterPool', async function () { - await dynamicClusterTest() - }) - .add('Poolifier:Dynamic:ClusterPool:LessRecentlyUsed', async function () { - await dynamicClusterTestLessRecentlyUsed() - }) - // Add listeners - .on('cycle', function (event) { - console.log(event.target.toString()) - }) - .on('complete', function () { - console.log( - 'Fastest is ' + - LIST_FORMATTER.format(this.filter('fastest').map('name')) - ) - // eslint-disable-next-line no-process-exit - process.exit() - }) - .run({ async: true }) -} +Benchmark.suite( + 'Poolifier', + Benchmark.add('Poolifier:Fixed:ThreadPool', async () => { + await fixedThreadTest() + }), + Benchmark.add('Poolifier:Fixed:ThreadPool:LessRecentlyUsed', async () => { + await fixedThreadTestLessRecentlyUsed() + }), + Benchmark.add('Poolifier:Fixed:ThreadPool:WeightedRoundRobin', async () => { + await fixedThreadTestWeightedRoundRobin() + }), + Benchmark.add('Poolifier:Fixed:ThreadPool:FairShare', async () => { + await fixedThreadTestFairShare() + }), + Benchmark.add('Poolifier:Dynamic:ThreadPool', async () => { + await dynamicThreadTest() + }), + Benchmark.add('Poolifier:Dynamic:ThreadPool:LessRecentlyUsed', async () => { + await dynamicThreadTestLessRecentlyUsed() + }), + Benchmark.add('Poolifier:Dynamic:ThreadPool:WeightedRoundRobin', async () => { + await dynamicThreadTestWeightedRoundRobin() + }), + Benchmark.add('Poolifier:Dynamic:ThreadPool:FairShare', async () => { + await dynamicThreadTestFairShare() + }), + Benchmark.add('Poolifier:Fixed:ClusterPool', async () => { + await fixedClusterTest() + }), + Benchmark.add('Poolifier:Fixed:ClusterPool:LessRecentlyUsed', async () => { + await fixedClusterTestLessRecentlyUsed() + }), + Benchmark.add('Poolifier:Fixed:ClusterPool:WeightedRoundRobin', async () => { + await fixedClusterTestWeightedRoundRobin + }), + Benchmark.add('Poolifier:Fixed:ClusterPool:FairShare', async () => { + await fixedClusterTestFairShare() + }), + Benchmark.add('Poolifier:Dynamic:ClusterPool', async () => { + await dynamicClusterTest() + }), + Benchmark.add('Poolifier:Dynamic:ClusterPool:LessRecentlyUsed', async () => { + await dynamicClusterTestLessRecentlyUsed() + }), + Benchmark.add( + 'Poolifier:Dynamic:ClusterPool:WeightedRoundRobin', + async () => { + await dynamicClusterTestWeightedRoundRobin + } + ), + Benchmark.add('Poolifier:Dynamic:ClusterPool:FairShare', async () => { + await dynamicClusterTestFairShare() + }), + Benchmark.cycle(), + Benchmark.complete(), + Benchmark.save({ + file: resultsFile, + folder: resultsFolder, + format: 'json', + details: true + }), + Benchmark.save({ + file: resultsFile, + folder: resultsFolder, + format: 'chart.html', + details: true + }), + Benchmark.save({ + file: resultsFile, + folder: resultsFolder, + format: 'table.html', + details: true + }) +) + .then(() => { + // eslint-disable-next-line n/no-process-exit + return process.exit() + }) + .catch(err => console.error(err))