chore: v3.1.26
[poolifier.git] / benchmarks / internal / bench.mjs
index 23ab0625807e349b89f6fabd55be766e45f9fff5..b59514d225b45adf149f011798156af1a7bcf675 100644 (file)
@@ -1,79 +1,66 @@
-import Benchmark from 'benchmark'
+import { exit } from 'node:process'
+
 import {
-  Measurements,
+  availableParallelism,
   PoolTypes,
-  WorkerChoiceStrategies,
-  WorkerTypes,
-  availableParallelism
+  WorkerTypes
 } from '../../lib/index.mjs'
-import { TaskFunctions } from '../benchmarks-types.mjs'
-import {
-  LIST_FORMATTER,
-  buildPoolifierPool,
-  runPoolifierTest
-} from '../benchmarks-utils.mjs'
+import { TaskFunctions } from '../benchmarks-types.cjs'
+import { runPoolifierPoolBenchmark } from '../benchmarks-utils.cjs'
 
 const poolSize = availableParallelism()
-const pools = []
-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]) {
-        if (workerChoiceStrategy === WorkerChoiceStrategies.FAIR_SHARE) {
-          for (const measurement of [Measurements.runTime, Measurements.elu]) {
-            pools.push([
-              `${poolType}|${workerType}|${workerChoiceStrategy}|tasks queue:${enableTasksQueue}|measurement:${measurement}`,
-              buildPoolifierPool(workerType, poolType, poolSize, {
-                workerChoiceStrategy,
-                workerChoiceStrategyOptions: {
-                  measurement
-                },
-                enableTasksQueue
-              })
-            ])
-          }
-        } else {
-          pools.push([
-            `${poolType}|${workerType}|${workerChoiceStrategy}|tasks queue:${enableTasksQueue}`,
-            buildPoolifierPool(workerType, poolType, poolSize, {
-              workerChoiceStrategy,
-              enableTasksQueue
-            })
-          ])
-        }
-      }
-    }
-  }
-}
-
 const taskExecutions = 1
 const workerData = {
   function: TaskFunctions.jsonIntegerSerialization,
-  taskSize: 100
+  taskSize: 1000
 }
 
-const suite = new Benchmark.Suite('Poolifier')
-for (const [name, pool] of pools) {
-  suite.add(name, async () => {
-    await runPoolifierTest(pool, {
-      taskExecutions,
-      workerData
-    })
-  })
-}
+// FixedThreadPool
+await runPoolifierPoolBenchmark(
+  'FixedThreadPool',
+  WorkerTypes.thread,
+  PoolTypes.fixed,
+  poolSize,
+  {
+    taskExecutions,
+    workerData
+  }
+)
+
+// DynamicThreadPool
+await runPoolifierPoolBenchmark(
+  'DynamicThreadPool',
+  WorkerTypes.thread,
+  PoolTypes.dynamic,
+  poolSize,
+  {
+    taskExecutions,
+    workerData
+  }
+)
+
+// FixedClusterPool
+await runPoolifierPoolBenchmark(
+  'FixedClusterPool',
+  WorkerTypes.cluster,
+  PoolTypes.fixed,
+  poolSize,
+  {
+    taskExecutions,
+    workerData
+  }
+)
+
+// DynamicClusterPool
+await runPoolifierPoolBenchmark(
+  'DynamicClusterPool',
+  WorkerTypes.cluster,
+  PoolTypes.dynamic,
+  poolSize,
+  {
+    taskExecutions,
+    workerData
+  }
+)
 
-suite
-  .on('cycle', event => {
-    console.info(event.target.toString())
-  })
-  .on('complete', function () {
-    console.info(
-      'Fastest is ' + LIST_FORMATTER.format(this.filter('fastest').map('name'))
-    )
-    // eslint-disable-next-line n/no-process-exit
-    process.exit()
-  })
-  .run({ async: true, maxTime: 120 })
+exit()