@callstack/reassure-measure
Version:
Performance measurement library for React and React Native
34 lines • 1.13 kB
JavaScript
import { config } from './config';
import { getCurrentTime, processRunResults } from './measure-helpers';
import { showFlagsOutputIfNeeded, writeTestStats } from './output';
export async function measureFunction(fn, options) {
const stats = await measureFunctionInternal(fn, options);
if (options?.writeFile !== false) {
await writeTestStats(stats, 'function');
}
return stats;
}
async function measureFunctionInternal(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();
fn();
const timeEnd = getCurrentTime();
await options?.afterEach?.();
const duration = timeEnd - timeStart;
runResults.push({
duration,
count: 1
});
}
return processRunResults(runResults, {
warmupRuns,
removeOutliers
});
}
//# sourceMappingURL=measure-function.js.map