blob: 1f1dfa0160fa11ef68b034a7cc54204a1c48d237 [file] [log] [blame]
Tobias Nießen5dae7d62020-09-08 22:19:021'use strict';
2
3const common = require('../common.js');
4const { randomInt } = require('crypto');
5
6const bench = common.createBenchmark(main, {
7 mode: ['sync', 'async-sequential', 'async-parallel'],
8 min: [-(2 ** 47) + 1, -10_000, -100],
9 max: [100, 10_000, 2 ** 47],
10 n: [1e3, 1e5]
11});
12
13function main({ mode, min, max, n }) {
14 if (mode === 'sync') {
15 bench.start();
16 for (let i = 0; i < n; i++)
17 randomInt(min, max);
18 bench.end(n);
19 } else if (mode === 'async-sequential') {
20 bench.start();
21 (function next(i) {
22 if (i === n)
23 return bench.end(n);
24 randomInt(min, max, () => {
25 next(i + 1);
26 });
27 })(0);
28 } else {
29 bench.start();
30 let done = 0;
31 for (let i = 0; i < n; i++) {
32 randomInt(min, max, () => {
33 if (++done === n)
34 bench.end(n);
35 });
36 }
37 }
38}