@callstack/reassure-measure
Version:
Performance measurement library for React and React Native
34 lines • 1.16 kB
JavaScript
import { config } from './config';
import { getCurrentTime, processRunResults } from './measure-helpers';
import { showFlagsOutputIfNeeded, writeTestStats } from './output';
export async function measureAsyncFunction(fn, options) {
const stats = await measureAsyncFunctionInternal(fn, options);
if (options?.writeFile !== false) {
await writeTestStats(stats, 'async function');
}
return stats;
}
async function measureAsyncFunctionInternal(fn, options) {
const runs = options?.runs ?? config.runs;
const warmupRuns = options?.warmupRuns ?? config.warmupRuns;
const removeOutliers = options?.removeOutliers ?? config.removeOutliers;
showFlagsOutputIfNeeded();
const runResults = [];
for (let i = 0; i < runs + warmupRuns; i += 1) {
await options?.beforeEach?.();
const timeStart = getCurrentTime();
await fn();
const timeEnd = getCurrentTime();
await options?.afterEach?.();
const duration = timeEnd - timeStart;
runResults.push({
duration,
count: 1
});
}
return processRunResults(runResults, {
warmupRuns,
removeOutliers
});
}
//# sourceMappingURL=measure-async-function.js.map