1'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} 39