'use strict'; const common = require('../common.js'); const { randomInt } = require('crypto'); const bench = common.createBenchmark(main, { mode: ['sync', 'async-sequential', 'async-parallel'], min: [-(2 ** 47) + 1, -10_000, -100], max: [100, 10_000, 2 ** 47], n: [1e3, 1e5], }); function main({ mode, min, max, n }) { if (mode === 'sync') { bench.start(); for (let i = 0; i < n; i++) randomInt(min, max); bench.end(n); } else if (mode === 'async-sequential') { bench.start(); (function next(i) { if (i === n) return bench.end(n); randomInt(min, max, () => { next(i + 1); }); })(0); } else { bench.start(); let done = 0; for (let i = 0; i < n; i++) { randomInt(min, max, () => { if (++done === n) bench.end(n); }); } } }