Merge pull request #1261 from poolifier/dependabot/npm_and_yarn/examples/typescript...
[poolifier.git] / benchmarks / benchmarks-utils.mjs
index 2d553580c42e29491d8dc7efbfa4750482f1dc15..79971825e20e9e66c394b7b229eb6b4b5d852eaf 100644 (file)
@@ -7,6 +7,7 @@ import {
   DynamicThreadPool,
   FixedClusterPool,
   FixedThreadPool,
+  Measurements,
   PoolTypes,
   WorkerChoiceStrategies,
   WorkerTypes
@@ -93,24 +94,59 @@ export const runPoolifierPoolBenchmark = async (
         WorkerChoiceStrategies
       )) {
         for (const enableTasksQueue of [false, true]) {
-          suite.add(
-            `${name}|${workerChoiceStrategy}|${
-              enableTasksQueue ? 'with' : 'without'
-            } tasks queue`,
-            async () => {
-              pool.setWorkerChoiceStrategy(workerChoiceStrategy)
-              pool.enableTasksQueue(enableTasksQueue)
-              assert.strictEqual(
-                pool.opts.workerChoiceStrategy,
-                workerChoiceStrategy
+          if (workerChoiceStrategy === WorkerChoiceStrategies.FAIR_SHARE) {
+            for (const measurement of [
+              Measurements.runTime,
+              Measurements.elu
+            ]) {
+              suite.add(
+                `${name} with ${workerChoiceStrategy}, with ${measurement} and ${
+                  enableTasksQueue ? 'with' : 'without'
+                } tasks queue`,
+                async () => {
+                  pool.setWorkerChoiceStrategy(workerChoiceStrategy, {
+                    measurement
+                  })
+                  pool.enableTasksQueue(enableTasksQueue)
+                  assert.strictEqual(
+                    pool.opts.workerChoiceStrategy,
+                    workerChoiceStrategy
+                  )
+                  assert.strictEqual(
+                    pool.opts.enableTasksQueue,
+                    enableTasksQueue
+                  )
+                  assert.strictEqual(
+                    pool.opts.workerChoiceStrategyOptions.measurement,
+                    measurement
+                  )
+                  await runPoolifierPool(pool, {
+                    taskExecutions,
+                    workerData
+                  })
+                }
               )
-              assert.strictEqual(pool.opts.enableTasksQueue, enableTasksQueue)
-              await runPoolifierPool(pool, {
-                taskExecutions,
-                workerData
-              })
             }
-          )
+          } else {
+            suite.add(
+              `${name} with ${workerChoiceStrategy} and ${
+                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 runPoolifierPool(pool, {
+                  taskExecutions,
+                  workerData
+                })
+              }
+            )
+          }
         }
       }
       suite
@@ -137,16 +173,6 @@ export const LIST_FORMATTER = new Intl.ListFormat('en-US', {
   type: 'conjunction'
 })
 
-export const executeAsyncFn = async fn => {
-  try {
-    await fn()
-  } catch (e) {
-    console.error(e)
-    // eslint-disable-next-line n/no-process-exit
-    process.exit(1)
-  }
-}
-
 export const generateRandomInteger = (
   max = Number.MAX_SAFE_INTEGER,
   min = 0