@dapplion/benchmark
Version:
Ensures that new code does not introduce performance regressions with CI. Tracks:
41 lines (40 loc) • 1.3 kB
JavaScript
export function computeBenchComparision(currBench, prevBench, threshold) {
const prevResults = new Map();
if (prevBench) {
for (const bench of prevBench.results) {
prevResults.set(bench.id, bench);
}
}
const results = currBench.results.map((currBench) => {
const { id } = currBench;
const prevBench = prevResults.get(id);
const thresholdBench = currBench.threshold ?? threshold;
if (prevBench) {
const ratio = currBench.averageNs / prevBench.averageNs;
return {
id,
currAverageNs: currBench.averageNs,
prevAverageNs: prevBench.averageNs,
ratio,
isFailed: ratio > thresholdBench,
isImproved: ratio < 1 / thresholdBench,
};
}
else {
return {
id,
currAverageNs: currBench.averageNs,
prevAverageNs: null,
ratio: null,
isFailed: false,
isImproved: false,
};
}
});
return {
currCommitSha: currBench.commitSha,
prevCommitSha: prevBench?.commitSha ?? null,
someFailed: results.some((r) => r.isFailed),
results,
};
}