@callstack/reassure-measure
Version:
Performance measurement library for React and React Native
40 lines (39 loc) • 1.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.measureAsyncFunction = measureAsyncFunction;
var _config = require("./config");
var _measureHelpers = require("./measure-helpers");
var _output = require("./output");
async function measureAsyncFunction(fn, options) {
const stats = await measureAsyncFunctionInternal(fn, options);
if (options?.writeFile !== false) {
await (0, _output.writeTestStats)(stats, 'async function');
}
return stats;
}
async function measureAsyncFunctionInternal(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)();
await 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-async-function.js.map