Commit | Line | Data |
---|---|---|
f10b1da0 JB |
1 | const Benchmark = require('benny') |
2 | const { secureRandom } = require('./benchmark-utils') | |
aa697b2f | 3 | |
f10b1da0 | 4 | const maximum = Number.MAX_SAFE_INTEGER |
aa697b2f | 5 | |
aa697b2f JB |
6 | /** |
7 | * @param max | |
8 | * @param min | |
7fd91296 | 9 | * @returns |
aa697b2f | 10 | */ |
f10b1da0 | 11 | function 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 | 28 | function 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 |
40 | Benchmark.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 | ) |