Skip to content

Commit 1dcf3df

Browse files
committed
Improve summary
1 parent 62fc903 commit 1dcf3df

File tree

1 file changed

+24
-48
lines changed

1 file changed

+24
-48
lines changed

site/static/compare.html

+24-48
Original file line numberDiff line numberDiff line change
@@ -208,20 +208,18 @@
208208
text-align: center;
209209
}
210210

211+
#summary {
212+
border: 1px dashed;
213+
padding: 4px;
214+
border-radius: 6px;
215+
}
216+
211217
.summary {
212218
display: flex;
213219
justify-content: center;
214220
align-items: center;
215221
width: 20%;
216222
}
217-
218-
#summary .improvement {
219-
border: 1px solid green;
220-
}
221-
222-
#summary .regression {
223-
border: 1px solid red;
224-
}
225223
</style>
226224
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
227225
</head>
@@ -364,7 +362,8 @@ <h2>Comparing <span id="stat-header">{{stat}}</span> between <span id="before">{
364362
<span class="tooltip">?
365363
<span class="tooltiptext">
366364
Whether to filter out all benchmarks that do not show significant changes. A significant
367-
change is any change above 0.2% for non-noisy benchmarks and 1.0% for noisy ones.
365+
change is any change greater than or equal to 0.2% for non-noisy benchmarks and above
366+
1.0% for noisy ones.
368367
</span>
369368
</span>
370369
</div>
@@ -373,11 +372,11 @@ <h2>Comparing <span id="stat-header">{{stat}}</span> between <span id="before">{
373372
</div>
374373
</fieldset>
375374
<div v-if="data" id="content" style="margin-top: 15px">
376-
<template v-for="summaryPair in Object.entries(summary)">
377-
<div id="summary" style="display: flex;">
378-
<span style="font-weight: bold;width: 20%;">{{ summaryPair[0] }}:</span>
379-
<div style="display: flex; justify-content: center; width: 80%;"
380-
v-bind="{ class: summaryClass(summaryPair[1]) }">
375+
<div id="summary">
376+
<div v-for="summaryPair in Object.entries(summary)" style="display: flex;">
377+
<span style="font-weight: bold; width: 30%; margin-left: 15%; text-transform: capitalize;">{{
378+
summaryPair[0] }}:</span>
379+
<div style="display: flex; justify-content: flex-end; width: 80%; margin-right: 15%;">
381380
<span class="summary positive">
382381
{{summaryPair[1].regressions.toString().padStart(3, "&nbsp;")}}
383382
<svg style="width:18px;height:18px" viewBox="0 0 24 24">
@@ -402,7 +401,7 @@ <h2>Comparing <span id="stat-header">{{stat}}</span> between <span id="before">{
402401
</span>
403402
</div>
404403
</div>
405-
</template>
404+
</div>
406405
<table id="benches" class="compare">
407406
<template v-for="bench in benches">
408407
<tbody>
@@ -424,7 +423,7 @@ <h2>Comparing <span id="stat-header">{{stat}}</span> between <span id="before">{
424423
<a
425424
v-bind:href="percentLink(data.b.commit, data.a.commit, bench.name, run.casename)">
426425
<span v-bind:class="percentClass(run.percent)">
427-
{{ run.percent }}%{{run.isDodgy ? "?" : ""}}
426+
{{ run.percent.toFixed(2) }}%{{run.isDodgy ? "?" : ""}}
428427
</span>
429428
</a>
430429
</td>
@@ -537,11 +536,7 @@ <h2>Comparing <span id="stat-header">{{stat}}</span> between <span id="before">{
537536
if (!datumB) {
538537
continue;
539538
}
540-
let percent = (100 * (datumB - datumA) / datumA).toFixed(1);
541-
if (percent === "-0.0") {
542-
percent = "0.0";
543-
}
544-
539+
let percent = (100 * (datumB - datumA) / datumA);
545540
let isDodgy = false;
546541
if (data.variance) {
547542
let variance = data.variance[name + "-" + key];
@@ -565,11 +560,10 @@ <h2>Comparing <span id="stat-header">{{stat}}</span> between <span id="before">{
565560
Object.keys(data.a.data).
566561
filter(n => filter.name && filter.name.trim() ? n.includes(filter.name.trim()) : true).
567562
map(name => {
568-
const variants = toVariants(name).filter(v => filter.showOnlySignificant ? isSignificant(v) : true);
563+
const variants = toVariants(name).filter(v => filter.showOnlySignificant ? isSignificant(v.percent, v.isDodgy) : true);
569564
const pcts = variants.map(field => parseFloat(field.percent));
570565
const maxPct = Math.max(...pcts).toFixed(1);
571566
const minPct = Math.min(...pcts).toFixed(1);
572-
const maxCasenameLen = Math.max(...variants.map(f => f.casename.length));
573567
if (variants.length > 0) {
574568
variants[0].first = true;
575569
}
@@ -579,7 +573,6 @@ <h2>Comparing <span id="stat-header">{{stat}}</span> between <span id="before">{
579573
variants,
580574
maxPct,
581575
minPct,
582-
maxCasenameLen,
583576
};
584577
}).
585578
filter(b => b.variants.length > 0);
@@ -654,23 +647,17 @@ <h2>Comparing <span id="stat-header">{{stat}}</span> between <span id="before">{
654647
if (!datumB) {
655648
continue;
656649
}
657-
let scenarioKind = scenario.substr(0, (scenario.indexOf(":") + 1 || scenario.length + 1) - 1);
658-
result[scenarioKind] ||= { ...newCount }
659650
let percent = 100 * ((datumB - datumA) / datumA);
660651
const isDodgy = this.isDodgy(benchmarkAndProfile, scenario);
661-
const threshold = isDodgy ? 1.0 : 0.2;
662-
if (percent > threshold) {
652+
if (percent > 0 && isSignificant(percent, isDodgy)) {
663653
result.all.regressions += 1;
664654
result.filtered.regressions += filtered[benchmarkAndProfile]?.[scenario] || 0;
665-
result[scenarioKind].regressions += 1;
666-
} else if (percent < -threshold) {
655+
} else if (percent < 0 && isSignificant(percent, isDodgy)) {
667656
result.all.improvements += 1;
668657
result.filtered.improvements += filtered[benchmarkAndProfile]?.[scenario] || 0;
669-
result[scenarioKind].improvements += 1;
670658
} else {
671659
result.all.unchanged += 1;
672660
result.filtered.unchanged += filtered[benchmarkAndProfile]?.[scenario] || 0;
673-
result[scenarioKind].unchanged += 1;
674661
}
675662
}
676663
}
@@ -742,27 +729,16 @@ <h2>Comparing <span id="stat-header">{{stat}}</span> between <span id="before">{
742729
variance = this.data.variance[benchmarkAndProfile + "-" + scenario];
743730
return (variance?.description?.type ?? "Normal") != "Normal";
744731
},
745-
summaryClass(summary) {
746-
if (summary.unchanged > Math.max(summary.improvements, summary.regressions)) {
747-
return '';
748-
}
749-
if (summary.improvements > summary.regressions) {
750-
return 'improvement';
751-
} else {
752-
return 'regression';
753-
}
754-
}
755732
},
756733
});
757734

758-
function isSignificant(variant) {
759-
const percent = Math.abs(variant.percent);
760-
if (variant.isDodgy) {
761-
return percent > 1.0;
735+
function isSignificant(percent, isNoisy) {
736+
const perAbs = Math.abs(percent);
737+
if (isNoisy) {
738+
return perAbs > 1.0;
762739
} else {
763-
return percent >= 0.2;
740+
return perAbs >= 0.2;
764741
}
765-
766742
}
767743

768744
function toggleFilters(id, toggle) {

0 commit comments

Comments
 (0)