X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=quick-select.mjs;h=5fc3ef379d9ee7af6e82c5226f25cfb3d36d4f51;hb=0198d46dc1ea2bf3ae5f22f585db13cb2c471db5;hp=6e5706db4b9be9400a223f975eadf42bcf623ba0;hpb=4247cbbd3c312d34802d06ca303be866cbc987ad;p=benchmarks-js.git diff --git a/quick-select.mjs b/quick-select.mjs index 6e5706d..5fc3ef3 100644 --- a/quick-select.mjs +++ b/quick-select.mjs @@ -1,5 +1,6 @@ -import Benchmark from 'benny' -import { generateRandomInteger } from './benchmark-utils.mjs' +import { randomInt } from 'node:crypto' + +import { bench, group, run } from 'tatami-ng' /** * @param numberOfWorkers @@ -12,7 +13,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) @@ -26,7 +27,7 @@ const tasksMap = generateRandomTasksMap(60, 20) */ function loopSelect (tasksMap) { let minKey - let minValue = Infinity + let minValue = Number.POSITIVE_INFINITY for (const [key, value] of tasksMap) { if (value === 0) { return key @@ -63,7 +64,7 @@ const defaultPivotIndexSelect = (leftIndex, rightIndex) => { } const randomPivotIndexSelect = (leftIndex, rightIndex) => { - return generateRandomInteger(rightIndex, leftIndex) + return randomInt(leftIndex, rightIndex) } /** @@ -227,43 +228,27 @@ function quickSelectRecursionRandomPivot (tasksMap) { ) } -Benchmark.suite( - 'Quick select', - Benchmark.add('Loop select', () => { +group('Quick select', () => { + bench('Loop select', () => { loopSelect(tasksMap) - }), - Benchmark.add('Array sort select', () => { + }) + bench('Array sort select', () => { arraySortSelect(tasksMap) - }), - Benchmark.add('Quick select loop', () => { + }) + bench('Quick select loop', () => { quickSelectLoop(tasksMap) - }), - Benchmark.add('Quick select loop with random pivot', () => { + }) + bench('Quick select loop with random pivot', () => { quickSelectLoopRandomPivot(tasksMap) - }), - Benchmark.add('Quick select recursion', () => { + }) + bench('Quick select recursion', () => { quickSelectRecursion(tasksMap) - }), - Benchmark.add('Quick select recursion with random pivot', () => { + }) + bench('Quick select recursion with random pivot', () => { quickSelectRecursionRandomPivot(tasksMap) - }), - Benchmark.cycle(), - Benchmark.complete(), - Benchmark.save({ - file: 'quick-select', - format: 'json', - details: true - }), - Benchmark.save({ - file: 'quick-select', - format: 'chart.html', - details: true - }), - Benchmark.save({ - file: 'quick-select', - format: 'table.html', - details: true }) -).catch(err => { - console.error(err) +}) + +await run({ + units: true, })