@dapplion/benchmark
Version:
Ensures that new code does not introduce performance regressions with CI. Tracks:
44 lines (43 loc) • 1.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.computeBenchComparision = computeBenchComparision;
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,
};
}