build(deps-dev): apply updates
[benchmarks-js.git] / random.mjs
index 2fff08e61c29e0c8d51161236b395d62fd34420e..37bac03bc3ff794aa03f34736a852d5b3785dca1 100644 (file)
@@ -1,11 +1,13 @@
-import crypto from 'node:crypto'
-import Benchmark from 'benny'
+import { randomInt } from 'node:crypto'
+
+import { bench, group, run } from 'tatami-ng'
+
 import {
   secureRandom,
   secureRandomWithRandomValues
 } from './benchmark-utils.mjs'
 
-const maximum = 281474976710654
+const maximum = 281474976710655
 
 /**
  * @param max
@@ -17,7 +19,7 @@ function getSecureRandomInteger (max = Number.MAX_SAFE_INTEGER, min = 0) {
     throw new RangeError('Invalid interval')
   }
   max = Math.floor(max)
-  if (min != null && min !== 0) {
+  if (min !== 0) {
     min = Math.ceil(min)
     return Math.floor(secureRandom() * (max - min + 1)) + min
   }
@@ -37,7 +39,7 @@ function getSecureRandomIntegerWithRandomValues (
     throw new RangeError('Invalid interval')
   }
   max = Math.floor(max)
-  if (min != null && min !== 0) {
+  if (min !== 0) {
     min = Math.ceil(min)
     return Math.floor(secureRandomWithRandomValues() * (max - min + 1)) + min
   }
@@ -54,52 +56,28 @@ function getRandomInteger (max = Number.MAX_SAFE_INTEGER, min = 0) {
     throw new RangeError('Invalid interval')
   }
   max = Math.floor(max)
-  if (min != null && min !== 0) {
+  if (min !== 0) {
     min = Math.ceil(min)
     return Math.floor(Math.random() * (max - min + 1)) + min
   }
   return Math.floor(Math.random() * (max + 1))
 }
 
-Benchmark.suite(
-  'Random Integer Generator',
-  Benchmark.add('Secure random integer generator', () => {
+group('Random Integer Generator', () => {
+  bench('Secure random integer generator', () => {
     getSecureRandomInteger(maximum)
-  }),
-  Benchmark.add(
-    'Secure random with getRandomValues() integer generator',
-    () => {
-      getSecureRandomIntegerWithRandomValues(maximum)
-    }
-  ),
-  Benchmark.add('Crypto random integer generator', (max = maximum, min = 0) => {
-    max = Math.floor(max)
-    if (min != null && min !== 0) {
-      min = Math.ceil(min)
-      return Math.floor(crypto.randomInt(min, max + 1))
-    }
-    return Math.floor(crypto.randomInt(max + 1))
-  }),
-  Benchmark.add('Math random integer generator', () => {
+  })
+  bench('Secure random with getRandomValues() integer generator', () => {
+    getSecureRandomIntegerWithRandomValues(maximum)
+  })
+  bench('Crypto random integer generator', () => {
+    randomInt(maximum)
+  })
+  bench('Math random integer generator', () => {
     getRandomInteger(maximum)
-  }),
-  Benchmark.cycle(),
-  Benchmark.complete(),
-  Benchmark.save({
-    file: 'random-integer-generator',
-    format: 'json',
-    details: true
-  }),
-  Benchmark.save({
-    file: 'random-integer-generator',
-    format: 'chart.html',
-    details: true
-  }),
-  Benchmark.save({
-    file: 'random-integer-generator',
-    format: 'table.html',
-    details: true
   })
-).catch(err => {
-  console.error(err)
+})
+
+await run({
+  units: true
 })