From 1676d5b1693706c55cf9b098d999ef062b21e374 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Sat, 16 Sep 2023 21:52:57 +0200 Subject: [PATCH] fix: fix continuous benchmarking MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- benchmarks/internal/bench.mjs | 110 +++++++++++++--------------------- 1 file changed, 42 insertions(+), 68 deletions(-) diff --git a/benchmarks/internal/bench.mjs b/benchmarks/internal/bench.mjs index 258854f8..7d3e90f2 100644 --- a/benchmarks/internal/bench.mjs +++ b/benchmarks/internal/bench.mjs @@ -1,6 +1,6 @@ +import assert from 'node:assert' import Benchmark from 'benchmark' import { - Measurements, PoolTypes, WorkerChoiceStrategies, WorkerTypes, @@ -13,58 +13,12 @@ import { runPoolifierTest } from '../benchmarks-utils.mjs' -const poolifierSuite = new Benchmark.Suite('Poolifier', { - onCycle: event => { - console.info(event.target.toString()) - }, - onComplete: function () { - console.info( - 'Fastest is ' + LIST_FORMATTER.format(this.filter('fastest').map('name')) - ) - } -}) - const poolSize = availableParallelism() -const benchmarkSettings = [] -for (const poolType of Object.values(PoolTypes)) { - for (const workerType of Object.values(WorkerTypes)) { - if (workerType === WorkerTypes.cluster) { - continue - } - for (const workerChoiceStrategy of Object.values(WorkerChoiceStrategies)) { - for (const enableTasksQueue of [false, true]) { - if (workerChoiceStrategy === WorkerChoiceStrategies.FAIR_SHARE) { - for (const measurement of [Measurements.runTime, Measurements.elu]) { - benchmarkSettings.push([ - `${poolType}|${workerType}|${workerChoiceStrategy}|tasks queue:${enableTasksQueue}|measurement:${measurement}`, - workerType, - poolType, - poolSize, - { - workerChoiceStrategy, - workerChoiceStrategyOptions: { - measurement - }, - enableTasksQueue - } - ]) - } - } else { - benchmarkSettings.push([ - `${poolType}|${workerType}|${workerChoiceStrategy}|tasks queue:${enableTasksQueue}`, - workerType, - poolType, - poolSize, - { - workerChoiceStrategy, - enableTasksQueue - } - ]) - } - } - } - } -} +const fixedThreadPool = buildPoolifierPool( + WorkerTypes.thread, + PoolTypes.fixed, + poolSize +) const taskExecutions = 1 const workerData = { @@ -72,21 +26,41 @@ const workerData = { taskSize: 100 } -for (const [ - name, - workerType, - poolType, - poolSize, - poolOptions -] of benchmarkSettings) { - poolifierSuite.add(name, async () => { - const pool = buildPoolifierPool(workerType, poolType, poolSize, poolOptions) - await runPoolifierTest(pool, { - taskExecutions, - workerData - }) - await pool.destroy() - }) +const poolifierSuite = new Benchmark.Suite('Poolifier') + +for (const pool of [fixedThreadPool]) { + for (const workerChoiceStrategy of Object.values(WorkerChoiceStrategies)) { + for (const enableTasksQueue of [false, true]) { + poolifierSuite.add( + `${pool.constructor.name}|${workerChoiceStrategy}|${ + enableTasksQueue ? 'with' : 'without' + } tasks queue`, + async () => { + pool.setWorkerChoiceStrategy(workerChoiceStrategy) + pool.enableTasksQueue(enableTasksQueue) + assert.strictEqual( + pool.opts.workerChoiceStrategy, + workerChoiceStrategy + ) + assert.strictEqual(pool.opts.enableTasksQueue, enableTasksQueue) + await runPoolifierTest(pool, { + taskExecutions, + workerData + }) + } + ) + } + } } -poolifierSuite.run({ async: true }) +poolifierSuite + .on('cycle', event => { + console.info(event.target.toString()) + }) + .on('complete', function () { + console.info( + 'Fastest is ' + LIST_FORMATTER.format(this.filter('fastest').map('name')) + ) + fixedThreadPool.destroy() + }) + .run({ async: true }) -- 2.34.1