Apply dependencies update
[benchmarks-js.git] / random.js
CommitLineData
f10b1da0
JB
1const Benchmark = require('benny')
2const { secureRandom } = require('./benchmark-utils')
aa697b2f 3
f10b1da0 4const maximum = Number.MAX_SAFE_INTEGER
aa697b2f 5
aa697b2f
JB
6/**
7 * @param max
8 * @param min
7fd91296 9 * @returns
aa697b2f 10 */
f10b1da0 11function getSecureRandomInteger (max = Number.MAX_SAFE_INTEGER, min = 0) {
7e861288
JB
12 if (max < min || max < 0 || min < 0) {
13 throw new RangeError('Invalid interval')
14 }
aa697b2f 15 max = Math.floor(max)
da504870 16 if (min != null && min !== 0) {
aa697b2f
JB
17 min = Math.ceil(min)
18 return Math.floor(secureRandom() * (max - min + 1)) + min
19 }
20 return Math.floor(secureRandom() * (max + 1))
21}
22
23/**
24 * @param max
25 * @param min
7fd91296 26 * @returns
aa697b2f 27 */
f10b1da0 28function getRandomInteger (max = Number.MAX_SAFE_INTEGER, min = 0) {
7e861288
JB
29 if (max < min || max < 0 || min < 0) {
30 throw new RangeError('Invalid interval')
31 }
aa697b2f 32 max = Math.floor(max)
da504870 33 if (min != null && min !== 0) {
aa697b2f
JB
34 min = Math.ceil(min)
35 return Math.floor(Math.random() * (max - min + 1)) + min
36 }
37 return Math.floor(Math.random() * (max + 1))
38}
39
f10b1da0
JB
40Benchmark.suite(
41 'Random Integer Generator',
e2bfb549 42 Benchmark.add('Secure random integer generator', () => {
aa697b2f 43 getSecureRandomInteger(maximum)
f10b1da0 44 }),
e2bfb549 45 Benchmark.add('Random integer generator', () => {
aa697b2f 46 getRandomInteger(maximum)
f10b1da0
JB
47 }),
48 Benchmark.cycle(),
49 Benchmark.complete(),
fb341cfe
JB
50 Benchmark.save({
51 file: 'random-integer-generator',
52 format: 'json',
53 details: true
54 }),
55 Benchmark.save({
56 file: 'random-integer-generator',
57 format: 'chart.html',
58 details: true
59 }),
60 Benchmark.save({
61 file: 'random-integer-generator',
62 format: 'table.html',
63 details: true
64 })
f10b1da0 65)