X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;ds=sidebyside;f=quick-select.js;h=d45a9e8b4bf653c38142ebabf026cd59ef0adc44;hb=9db6379f83a78902f85f14d7cc672e8bdb7b4968;hp=57c4deeb2f423788cd4613a3bdb69d700b62a8cb;hpb=e9bfc28e575ac3a05a748526e241cb584f55480e;p=benchmarks-js.git diff --git a/quick-select.js b/quick-select.js index 57c4dee..d45a9e8 100644 --- a/quick-select.js +++ b/quick-select.js @@ -1,11 +1,10 @@ -const Benchmark = require('benchmark') -const { generateRandomInteger, LIST_FORMATTER } = require('./benchmark-utils') - -const suite = new Benchmark.Suite() +const Benchmark = require('benny') +const { generateRandomInteger } = require('./benchmark-utils') /** * @param numberOfWorkers * @param maxNumberOfTasksPerWorker + * @returns */ function generateRandomTasksMap ( numberOfWorkers, @@ -23,6 +22,7 @@ const tasksMap = generateRandomTasksMap(60, 20) /** * @param tasksMap + * @returns */ function loopSelect (tasksMap) { let minValue = Infinity @@ -40,6 +40,7 @@ function loopSelect (tasksMap) { /** * @param tasksMap + * @returns */ function arraySortSelect (tasksMap) { const tasksArray = Array.from(tasksMap) @@ -62,7 +63,7 @@ const defaultPivotIndexSelect = (leftIndex, rightIndex) => { } const randomPivotIndexSelect = (leftIndex, rightIndex) => { - return generateRandomInteger(leftIndex, rightIndex) + return generateRandomInteger(rightIndex, leftIndex) } /** @@ -82,6 +83,7 @@ function swap (array, index1, index2) { * @param rightIndex * @param pivotIndex * @param compare + * @returns */ function partition ( array, @@ -110,6 +112,7 @@ function partition ( * @param rightIndex * @param compare * @param pivotIndexSelect + * @returns */ function selectLoop ( array, @@ -140,6 +143,7 @@ function selectLoop ( * @param rightIndex * @param compare * @param pivotIndexSelect + * @returns */ function selectRecursion ( array, @@ -163,6 +167,7 @@ function selectRecursion ( /** * @param tasksMap + * @returns */ function quickSelectLoop (tasksMap) { const tasksArray = Array.from(tasksMap) @@ -174,6 +179,7 @@ function quickSelectLoop (tasksMap) { /** * @param tasksMap + * @returns */ function quickSelectLoopRandomPivot (tasksMap) { const tasksArray = Array.from(tasksMap) @@ -192,6 +198,7 @@ function quickSelectLoopRandomPivot (tasksMap) { /** * @param tasksMap + * @returns */ function quickSelectRecursion (tasksMap) { const tasksArray = Array.from(tasksMap) @@ -203,6 +210,7 @@ function quickSelectRecursion (tasksMap) { /** * @param tasksMap + * @returns */ function quickSelectRecursionRandomPivot (tasksMap) { const tasksArray = Array.from(tasksMap) @@ -219,41 +227,41 @@ function quickSelectRecursionRandomPivot (tasksMap) { ) } -// console.log(Array.from(tasksMap)) -// console.log(loopSelect(tasksMap)) -// console.log(arraySortSelect(tasksMap)) -// console.log(quickSelectLoop(tasksMap)) -// console.log(quickSelectLoopRandomPivot(tasksMap)) -// console.log(quickSelectRecursion(tasksMap)) -// console.log(quickSelectRecursionRandomPivot(tasksMap)) - -suite - .add('Loop select', function () { +Benchmark.suite( + 'Quick select', + Benchmark.add('Loop select', () => { loopSelect(tasksMap) - }) - .add('Array sort select', function () { + }), + Benchmark.add('Array sort select', () => { arraySortSelect(tasksMap) - }) - .add('Quick select loop', function () { + }), + Benchmark.add('Quick select loop', () => { quickSelectLoop(tasksMap) - }) - .add('Quick select loop with random pivot', function () { + }), + Benchmark.add('Quick select loop with random pivot', () => { quickSelectLoopRandomPivot(tasksMap) - }) - .add('Quick select recursion', function () { + }), + Benchmark.add('Quick select recursion', () => { quickSelectRecursion(tasksMap) - }) - .add('Quick select recursion with random pivot', function () { + }), + Benchmark.add('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 }) - .on('cycle', function (event) { - console.log(event.target.toString()) - }) - .on('complete', function () { - console.log( - 'Fastest is ' + LIST_FORMATTER.format(this.filter('fastest').map('name')) - ) - // eslint-disable-next-line no-process-exit - process.exit() - }) - .run() +)