build: add packageManager field to package.json
[poolifier.git] / benchmarks / worker-selection / least.mjs
index 0969369fb6e1a49c6b10563aa5ab5b6fc1935b5b..40b360ea694158929e4bb7d9d6c0020b4eb1c30c 100644 (file)
@@ -1,5 +1,6 @@
-import Benchmark from 'benchmark'
-import { LIST_FORMATTER, generateRandomInteger } from '../benchmarks-utils.js'
+import { randomInt } from 'node:crypto'
+
+import { bench, group, run } from 'mitata'
 
 function generateRandomTasksMap (
   numberOfWorkers,
@@ -7,7 +8,7 @@ function generateRandomTasksMap (
 ) {
   const tasksArray = []
   for (let i = 0; i < numberOfWorkers; i++) {
-    const task = [i, generateRandomInteger(maxNumberOfTasksPerWorker)]
+    const task = [i, randomInt(maxNumberOfTasksPerWorker)]
     tasksArray.push(task)
   }
   return new Map(tasksArray)
@@ -50,7 +51,7 @@ const defaultPivotIndexSelect = (leftIndex, rightIndex) => {
 }
 
 const randomPivotIndexSelect = (leftIndex, rightIndex) => {
-  return generateRandomInteger(rightIndex, leftIndex)
+  return randomInt(leftIndex, rightIndex)
 }
 
 function swap (array, index1, index2) {
@@ -167,31 +168,25 @@ function quickSelectRecursionRandomPivot (tasksMap) {
   )
 }
 
-new Benchmark.Suite('Least used worker tasks distribution')
-  .add('Loop select', () => {
+group('Least used worker tasks distribution', () => {
+  bench('Loop select', () => {
     loopSelect(tasksMap)
   })
-  .add('Array sort select', () => {
+  bench('Array sort select', () => {
     arraySortSelect(tasksMap)
   })
-  .add('Quick select loop', () => {
+  bench('Quick select loop', () => {
     quickSelectLoop(tasksMap)
   })
-  .add('Quick select loop with random pivot', () => {
+  bench('Quick select loop with random pivot', () => {
     quickSelectLoopRandomPivot(tasksMap)
   })
-  .add('Quick select recursion', () => {
+  bench('Quick select recursion', () => {
     quickSelectRecursion(tasksMap)
   })
-  .add('Quick select recursion with random pivot', () => {
+  bench('Quick select recursion with random pivot', () => {
     quickSelectRecursionRandomPivot(tasksMap)
   })
-  .on('cycle', event => {
-    console.info(event.target.toString())
-  })
-  .on('complete', function () {
-    console.info(
-      'Fastest is ' + LIST_FORMATTER.format(this.filter('fastest').map('name'))
-    )
-  })
-  .run()
+})
+
+await run({ units: true })