@callstack/reassure-measure
Version:
Performance measurement library for React and React Native
40 lines (39 loc) • 1.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.measureFunction = measureFunction;
var _config = require("./config");
var _measureHelpers = require("./measure-helpers");
var _output = require("./output");
async function measureFunction(fn, options) {
const stats = await measureFunctionInternal(fn, options);
if (options?.writeFile !== false) {
await (0, _output.writeTestStats)(stats, 'function');
}
return stats;
}
async function measureFunctionInternal(fn, options) {
const runs = options?.runs ?? _config.config.runs;
const warmupRuns = options?.warmupRuns ?? _config.config.warmupRuns;
const removeOutliers = options?.removeOutliers ?? _config.config.removeOutliers;
(0, _output.showFlagsOutputIfNeeded)();
const runResults = [];
for (let i = 0; i < runs + warmupRuns; i += 1) {
await options?.beforeEach?.();
const timeStart = (0, _measureHelpers.getCurrentTime)();
fn();
const timeEnd = (0, _measureHelpers.getCurrentTime)();
await options?.afterEach?.();
const duration = timeEnd - timeStart;
runResults.push({
duration,
count: 1
});
}
return (0, _measureHelpers.processRunResults)(runResults, {
warmupRuns,
removeOutliers
});
}
//# sourceMappingURL=measure-function.js.map