UNPKG

iso-bench

Version:

Small benchmark library focused in avoiding optimization/deoptimization pollution between tests by isolating them.

43 lines (42 loc) 1.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getDiff = getDiff; exports.getAsyncDiff = getAsyncDiff; const perf_hooks_1 = require("perf_hooks"); function getDiff(cycles, callback, setup) { const setupData = setup && setup(); const startTS = perf_hooks_1.performance.now(); while (cycles-- > 0) { callback(setupData); } return perf_hooks_1.performance.now() - startTS; } function runAsync(cycles, callback, setup, resolve, reject) { let sync = true; while (cycles-- > 0 && sync) { sync = false; callback(() => { if (sync) { runAsync(cycles, callback, setup, resolve, reject); } else { sync = true; } }, reject, setup); } if (sync) { resolve(); } else { sync = true; } } function getAsyncDiff(cycles, callback, setup) { return new Promise((resolve, reject) => { const setupData = setup && setup(); const startTS = perf_hooks_1.performance.now(); runAsync(cycles, callback, setupData, () => { resolve(perf_hooks_1.performance.now() - startTS); }, reject); }); }