More linter silencing
[benchmarks-js.git] / quick-select.js
index 57c4deeb2f423788cd4613a3bdb69d700b62a8cb..d45a9e8b4bf653c38142ebabf026cd59ef0adc44 100644 (file)
@@ -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()
+)