perf(benchmark): port to homemade mitata fork
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Sat, 6 Apr 2024 13:23:29 +0000 (15:23 +0200)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Sat, 6 Apr 2024 13:23:29 +0000 (15:23 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
benchmarks/benchmarks-utils.mjs
benchmarks/internal/bench.mjs

index 5db55b3b11c9b8c956e46397674e71a34471d241..48101fdaadc434073f81906a0ad0d7095e3f675a 100644 (file)
@@ -1,7 +1,7 @@
 import { strictEqual } from 'node:assert'
 
 import Benchmark from 'benchmark'
-import { bench, group } from 'mitata'
+import { bench, clear, group, run } from 'mitata'
 
 import {
   DynamicClusterPool,
@@ -249,7 +249,7 @@ export const runPoolifierBenchmarkBenchmarkJsSuite = async (
   })
 }
 
-export const buildPoolifierBenchmarkMitata = (
+export const runPoolifierBenchmarkMitata = async (
   name,
   workerType,
   poolType,
@@ -313,7 +313,9 @@ export const buildPoolifierBenchmarkMitata = (
         }
       }
     }
-    return pool
+    await run()
+    await pool.destroy()
+    clear()
   } catch (error) {
     console.error(error)
   }
index 564a4de14621bf6bd096e7fc940753f8eb6ee0d9..480998b72c935900681627839091162befbd6a23 100644 (file)
@@ -1,8 +1,6 @@
 import { exit } from 'node:process'
 import { parseArgs } from 'node:util'
 
-import { run } from 'mitata'
-
 import {
   availableParallelism,
   PoolTypes,
@@ -10,8 +8,8 @@ import {
 } from '../../lib/index.mjs'
 import { TaskFunctions } from '../benchmarks-types.cjs'
 import {
-  buildPoolifierBenchmarkMitata,
-  runPoolifierBenchmarkBenchmarkJsSuite
+  runPoolifierBenchmarkBenchmarkJsSuite,
+  runPoolifierBenchmarkMitata
 } from '../benchmarks-utils.mjs'
 
 const poolSize = availableParallelism()
@@ -21,10 +19,6 @@ const workerData = {
   taskSize: 50000
 }
 
-let fixedThreadPool
-let dynamicThreadPool
-let fixedClusterPool
-let dynamicClusterPool
 switch (
   parseArgs({
     args: process.argv,
@@ -39,7 +33,7 @@ switch (
   }).values.type
 ) {
   case 'mitata':
-    fixedThreadPool = buildPoolifierBenchmarkMitata(
+    await runPoolifierBenchmarkMitata(
       'FixedThreadPool',
       WorkerTypes.thread,
       PoolTypes.fixed,
@@ -49,7 +43,7 @@ switch (
         workerData
       }
     )
-    dynamicThreadPool = buildPoolifierBenchmarkMitata(
+    await runPoolifierBenchmarkMitata(
       'DynamicThreadPool',
       WorkerTypes.thread,
       PoolTypes.dynamic,
@@ -59,7 +53,7 @@ switch (
         workerData
       }
     )
-    fixedClusterPool = buildPoolifierBenchmarkMitata(
+    await runPoolifierBenchmarkMitata(
       'FixedClusterPool',
       WorkerTypes.cluster,
       PoolTypes.fixed,
@@ -69,7 +63,7 @@ switch (
         workerData
       }
     )
-    dynamicClusterPool = buildPoolifierBenchmarkMitata(
+    await runPoolifierBenchmarkMitata(
       'DynamicClusterPool',
       WorkerTypes.cluster,
       PoolTypes.dynamic,
@@ -79,11 +73,6 @@ switch (
         workerData
       }
     )
-    await run()
-    await fixedThreadPool.destroy()
-    await dynamicThreadPool.destroy()
-    await fixedClusterPool.destroy()
-    await dynamicClusterPool.destroy()
     break
   case 'benchmark.js':
   default: