perf(benchmark): port to homemade mitata fork
[poolifier.git] / benchmarks / internal / bench.mjs
index 368cf29c949f487b3223b5dd90c74beedcd359d1..480998b72c935900681627839091162befbd6a23 100644 (file)
+import { exit } from 'node:process'
+import { parseArgs } from 'node:util'
+
 import {
+  availableParallelism,
   PoolTypes,
-  WorkerTypes,
-  availableParallelism
+  WorkerTypes
 } from '../../lib/index.mjs'
-import { TaskFunctions } from '../benchmarks-types.js'
-import { runPoolifierPoolBenchmark } from '../benchmarks-utils.js'
+import { TaskFunctions } from '../benchmarks-types.cjs'
+import {
+  runPoolifierBenchmarkBenchmarkJsSuite,
+  runPoolifierBenchmarkMitata
+} from '../benchmarks-utils.mjs'
 
 const poolSize = availableParallelism()
 const taskExecutions = 1
 const workerData = {
-  function: TaskFunctions.jsonIntegerSerialization,
-  taskSize: 1000
+  function: TaskFunctions.factorial,
+  taskSize: 50000
 }
 
-// FixedThreadPool
-await runPoolifierPoolBenchmark(
-  'Poolifier FixedThreadPool',
-  WorkerTypes.thread,
-  PoolTypes.fixed,
-  poolSize,
-  {
-    taskExecutions,
-    workerData
-  }
-)
-
-// DynamicThreadPool
-await runPoolifierPoolBenchmark(
-  'Poolifier DynamicThreadPool',
-  WorkerTypes.thread,
-  PoolTypes.dynamic,
-  poolSize,
-  {
-    taskExecutions,
-    workerData
-  }
-)
-
-// FixedClusterPool
-await runPoolifierPoolBenchmark(
-  'Poolifier FixedClusterPool',
-  WorkerTypes.cluster,
-  PoolTypes.fixed,
-  poolSize,
-  {
-    taskExecutions,
-    workerData
-  }
-)
+switch (
+  parseArgs({
+    args: process.argv,
+    options: {
+      type: {
+        type: 'string',
+        short: 't'
+      }
+    },
+    strict: true,
+    allowPositionals: true
+  }).values.type
+) {
+  case 'mitata':
+    await runPoolifierBenchmarkMitata(
+      'FixedThreadPool',
+      WorkerTypes.thread,
+      PoolTypes.fixed,
+      poolSize,
+      {
+        taskExecutions,
+        workerData
+      }
+    )
+    await runPoolifierBenchmarkMitata(
+      'DynamicThreadPool',
+      WorkerTypes.thread,
+      PoolTypes.dynamic,
+      poolSize,
+      {
+        taskExecutions,
+        workerData
+      }
+    )
+    await runPoolifierBenchmarkMitata(
+      'FixedClusterPool',
+      WorkerTypes.cluster,
+      PoolTypes.fixed,
+      poolSize,
+      {
+        taskExecutions,
+        workerData
+      }
+    )
+    await runPoolifierBenchmarkMitata(
+      'DynamicClusterPool',
+      WorkerTypes.cluster,
+      PoolTypes.dynamic,
+      poolSize,
+      {
+        taskExecutions,
+        workerData
+      }
+    )
+    break
+  case 'benchmark.js':
+  default:
+    await runPoolifierBenchmarkBenchmarkJsSuite(
+      'FixedThreadPool',
+      WorkerTypes.thread,
+      PoolTypes.fixed,
+      poolSize,
+      {
+        taskExecutions,
+        workerData
+      }
+    )
+    await runPoolifierBenchmarkBenchmarkJsSuite(
+      'DynamicThreadPool',
+      WorkerTypes.thread,
+      PoolTypes.dynamic,
+      poolSize,
+      {
+        taskExecutions,
+        workerData
+      }
+    )
+    await runPoolifierBenchmarkBenchmarkJsSuite(
+      'FixedClusterPool',
+      WorkerTypes.cluster,
+      PoolTypes.fixed,
+      poolSize,
+      {
+        taskExecutions,
+        workerData
+      }
+    )
+    await runPoolifierBenchmarkBenchmarkJsSuite(
+      'DynamicClusterPool',
+      WorkerTypes.cluster,
+      PoolTypes.dynamic,
+      poolSize,
+      {
+        taskExecutions,
+        workerData
+      }
+    )
+    break
+}
 
-// DynamicClusterPool
-await runPoolifierPoolBenchmark(
-  'Poolifier DynamicClusterPool',
-  WorkerTypes.cluster,
-  PoolTypes.dynamic,
-  poolSize,
-  {
-    taskExecutions,
-    workerData
-  }
-)
+exit()