Add empty array benchmark
authorJérôme Benoit <jerome.benoit@sap.com>
Sat, 22 Oct 2022 08:38:59 +0000 (10:38 +0200)
committerJérôme Benoit <jerome.benoit@sap.com>
Sat, 22 Oct 2022 08:38:59 +0000 (10:38 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com>
busy-wait.js
empty-array.js [new file with mode: 0644]
fibonacci.js
package.json

index f2d10f3cd24f3d99d3a30d0c6fca6463991faf5f..46e5853ca0c1e1951e616cf984fae44a484e0e44 100644 (file)
@@ -57,19 +57,19 @@ function setIntervalTimeoutBusyWait (timeoutMs, intervalMs = interval) {
 }
 
 suite
-  .add('dummyTimeoutBusyWait', function () {
+  .add('dummyTimeoutBusyWait', () => {
     dummyTimeoutBusyWait(timeout)
   })
-  .add('sleepTimeoutBusyWait', async function () {
+  .add('sleepTimeoutBusyWait', async () => {
     sleepTimeoutBusyWait(timeout)
   })
-  .add('divideAndConquerTimeoutBusyWait', async function () {
+  .add('divideAndConquerTimeoutBusyWait', async () => {
     await divideAndConquerTimeoutBusyWait(timeout)
   })
-  .add('setIntervalTimeoutBusyWait', function () {
+  .add('setIntervalTimeoutBusyWait', () => {
     setIntervalTimeoutBusyWait(timeout)
   })
-  .on('cycle', function (event) {
+  .on('cycle', event => {
     console.log(event.target.toString())
   })
   .on('complete', function () {
diff --git a/empty-array.js b/empty-array.js
new file mode 100644 (file)
index 0000000..9f93d32
--- /dev/null
@@ -0,0 +1,51 @@
+const Benchmark = require('benchmark')
+const { LIST_FORMATTER } = require('./benchmark-utils')
+
+const suite = new Benchmark.Suite()
+
+let testArray = [
+  83, 93, 27, 29, 2828, 234, 23, 56, 32, 56, 67, 77, 32, 45, 93, 17, 28, 83, 62,
+  99, 36, 28, 93, 27, 29, 2828, 234, 23, 56, 32, 56, 67, 77, 32, 45, 93, 17, 28,
+  83, 62, 99, 36, 28, 93, 27, 29, 2828, 234, 23, 56, 32, 56, 67, 77, 32, 45, 93,
+  17, 28, 83, 62, 99, 36, 28, 93, 27, 29, 2828, 234, 23, 56, 32, 56, 67, 77, 32,
+  45, 93, 17, 28, 83, 62, 99, 36, 28, 93, 27, 29, 2828, 234, 23, 56, 32, 56, 67,
+  77, 32, 45, 93, 17, 28, 83, 62, 99, 36, 28, 93, 27, 29, 2828, 234, 23, 56, 32,
+  56, 67, 77, 32, 45, 93, 17, 28, 83, 62, 99, 36, 28, 93, 27, 29, 2828, 234, 23,
+  56, 32, 56, 67, 77, 32, 45, 93, 17, 28, 83, 62, 99, 36, 28, 93, 27, 29, 2828,
+  234, 23, 56, 32, 56, 67, 77, 32, 45, 93, 17, 28, 83, 62, 99, 36, 28, 93, 27,
+  29, 2828, 234, 23, 56, 32, 56, 67, 77, 32, 45, 93, 17, 28, 83, 62, 99, 36, 28,
+  93, 27, 29, 2828, 234, 23, 56, 32, 56, 67, 77, 32, 45, 93, 17, 28, 83, 62, 99,
+  36, 28
+]
+
+suite
+  .add('length = 0', () => {
+    testArray.length = 0
+  })
+  .add('pop loop', async () => {
+    while (testArray.length > 0) {
+      testArray.pop()
+    }
+  })
+  .add('splice', async () => {
+    testArray.splice(0, testArray.length)
+  })
+  .add('shift loop', () => {
+    while (testArray.length > 0) {
+      testArray.shift()
+    }
+  })
+  .add('new init', () => {
+    testArray = []
+  })
+  .on('cycle', 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 n/no-process-exit
+    process.exit()
+  })
+  .run()
index 4a52de4a1bcc3f20904728791debe6df2d976e98..729fe9260bc5b87e787f321f030139b93e4300d5 100644 (file)
@@ -51,16 +51,16 @@ function fibonacciRecursionMemoization (num, memo) {
 }
 
 suite
-  .add('fibonacciLoop', function () {
+  .add('fibonacciLoop', () => {
     fibonacciLoop(number)
   })
-  .add('fibonacciRecursion', function () {
+  .add('fibonacciRecursion', () => {
     fibonacciRecursion(number)
   })
-  .add('fibonacciRecursionMemoization', function () {
+  .add('fibonacciRecursionMemoization', () => {
     fibonacciRecursionMemoization(number)
   })
-  .on('cycle', function (event) {
+  .on('cycle', event => {
     console.log(event.target.toString())
   })
   .on('complete', function () {
index 5c54c47efe02c82709eca6ef41037d970d7268a2..ed3240f7221e4315f102cb6d04f8449be0a0a7eb 100644 (file)
@@ -8,6 +8,7 @@
   },
   "scripts": {
     "benchmark:busy-wait": "node busy-wait.js",
+    "benchmark:empty-array": "node empty-array.js",
     "benchmark:quick-select": "node quick-select.js",
     "benchmark:promise-handling": "node promise-handling.js",
     "benchmark:fibonacci": "node fibonacci.js",