-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,
/**
* @param tasksMap
+ * @returns
*/
function loopSelect (tasksMap) {
let minValue = Infinity
/**
* @param tasksMap
+ * @returns
*/
function arraySortSelect (tasksMap) {
const tasksArray = Array.from(tasksMap)
}
const randomPivotIndexSelect = (leftIndex, rightIndex) => {
- return generateRandomInteger(leftIndex, rightIndex)
+ return generateRandomInteger(rightIndex, leftIndex)
}
/**
* @param rightIndex
* @param pivotIndex
* @param compare
+ * @returns
*/
function partition (
array,
* @param rightIndex
* @param compare
* @param pivotIndexSelect
+ * @returns
*/
function selectLoop (
array,
* @param rightIndex
* @param compare
* @param pivotIndexSelect
+ * @returns
*/
function selectRecursion (
array,
/**
* @param tasksMap
+ * @returns
*/
function quickSelectLoop (tasksMap) {
const tasksArray = Array.from(tasksMap)
/**
* @param tasksMap
+ * @returns
*/
function quickSelectLoopRandomPivot (tasksMap) {
const tasksArray = Array.from(tasksMap)
/**
* @param tasksMap
+ * @returns
*/
function quickSelectRecursion (tasksMap) {
const tasksArray = Array.from(tasksMap)
/**
* @param tasksMap
+ * @returns
*/
function quickSelectRecursionRandomPivot (tasksMap) {
const tasksArray = Array.from(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()
+)