Skip to content

Commit 13a37d5

Browse files
committed
Display mean of benchmarks in compare site
1 parent 9a9d1a8 commit 13a37d5

File tree

2 files changed

+55
-16
lines changed

2 files changed

+55
-16
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ target
44
/cache/
55
/rust.git/
66
/rust/
7+
rust-baseline

site/static/compare.html

Lines changed: 54 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,9 @@
227227
align-items: center;
228228
width: 20%;
229229
}
230+
.summary-wide {
231+
width: 35%;
232+
}
230233
</style>
231234
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
232235
</head>
@@ -262,6 +265,7 @@
262265
</div>
263266
</div>
264267
<input id="submit" type="submit" value="Submit" onclick="submitSettings(); return false;">
268+
</div>
265269
</fieldset>
266270
<h2>Comparing <span id="stat-header">{{stat}}</span> between <span id="before">{{before}}</span> and
267271
<span id="after">{{after}}</span>
@@ -405,28 +409,33 @@ <h2>Comparing <span id="stat-header">{{stat}}</span> between <span id="before">{
405409
<div v-for="summaryPair in Object.entries(summary)" style="display: flex;">
406410
<span style="font-weight: bold; width: 30%; margin-left: 15%; text-transform: capitalize;">{{
407411
summaryPair[0] }}:</span>
408-
<div style="display: flex; justify-content: flex-end; width: 80%; margin-right: 15%;">
409-
<span class="summary positive">
412+
<div style="display: flex; justify-content: flex-end; width: 80%; margin-right: 5%;">
413+
<span class="summary summary-wide positive">
410414
{{summaryPair[1].regressions.toString().padStart(3, "&nbsp;")}}
411415
<svg style="width:18px;height:18px" viewBox="0 0 24 24">
412416
<path
413-
d="M16,18L18.29,15.71L13.41,10.83L9.41,14.83L2,7.41L3.41,6L9.41,12L13.41,8L19.71,14.29L22,12V18H16Z">
417+
d="M16,6L18.29,8.29L13.41,13.17L9.41,9.17L2,16.59L3.41,18L9.41,12L13.41,16L19.71,9.71L22,12V6H16Z">
414418
</path>
415419
</svg>
420+
&nbsp;(+{{(summaryPair[1].regressions_avg).toFixed(2)}}%)
416421
</span>
417422
<span class="summary">
418423
{{summaryPair[1].unchanged.toString().padStart(3, "&nbsp;")}}
419424
<svg style="width:18px;height:18px" viewBox="0 0 24 24">
420425
<path d="M22,12L18,8V11H3V13H18V16L22,12Z"></path>
421426
</svg>
422427
</span>
423-
<span class="summary negative">
428+
<span class="summary summary-wide negative">
424429
{{summaryPair[1].improvements.toString().padStart(3, "&nbsp;")}}
425430
<svg style="width:18px;height:18px" viewBox="0 0 24 24">
426431
<path
427-
d="M16,6L18.29,8.29L13.41,13.17L9.41,9.17L2,16.59L3.41,18L9.41,12L13.41,16L19.71,9.71L22,12V6H16Z">
432+
d="M16,18L18.29,15.71L13.41,10.83L9.41,14.83L2,7.41L3.41,6L9.41,12L13.41,8L19.71,14.29L22,12V18H16Z">
428433
</path>
429434
</svg>
435+
&nbsp;({{(summaryPair[1].improvements_avg).toFixed(2)}}%)
436+
</span>
437+
<span class="summary" v-bind:class="percentClass(summaryPair[1].average)">
438+
&nbsp;{{ signIfNegative(summaryPair[1].average) }}{{ (summaryPair[1].average * 100).toFixed(2) }}%
430439
</span>
431440
</div>
432441
</div>
@@ -706,25 +715,48 @@ <h2>Comparing <span id="stat-header">{{stat}}</span> between <span id="before">{
706715
sum[testCaseString(next)] = true;
707716
return sum;
708717
}, {});
709-
const newCount = { regressions: 0, improvements: 0, unchanged: 0 }
718+
const newCount = {
719+
regressions: 0,
720+
regressions_avg: 0,
721+
improvements: 0,
722+
improvements_avg: 0,
723+
unchanged: 0,
724+
average: 0
725+
};
726+
727+
const addDatum = (result, datum, percent) => {
728+
if (percent > 0 && datum.is_significant) {
729+
result.regressions += 1;
730+
result.regressions_avg += percent;
731+
} else if (percent < 0 && datum.is_significant) {
732+
result.improvements += 1;
733+
result.improvements_avg += percent;
734+
} else {
735+
result.unchanged += 1;
736+
}
737+
result.average += percent / 100;
738+
};
739+
710740
let result = { all: { ...newCount }, filtered: { ...newCount } }
711741
for (let d of this.data.comparisons) {
712742
const testCase = testCaseString(d)
713-
const scenario = d.scenario;
714743
const datumA = d.statistics[0];
715744
const datumB = d.statistics[1];
716745
let percent = 100 * ((datumB - datumA) / datumA);
717-
if (percent > 0 && d.is_significant) {
718-
result.all.regressions += 1;
719-
result.filtered.regressions += filtered[testCase] || 0;
720-
} else if (percent < 0 && d.is_significant) {
721-
result.all.improvements += 1;
722-
result.filtered.improvements += filtered[testCase] || 0;
723-
} else {
724-
result.all.unchanged += 1;
725-
result.filtered.unchanged += filtered[testCase] || 0;
746+
addDatum(result.all, d, percent);
747+
if (filtered[testCase]) {
748+
addDatum(result.filtered, d, percent);
726749
}
727750
}
751+
752+
const computeAvg = (result) => {
753+
result.improvements_avg /= Math.max(result.improvements, 1);
754+
result.regressions_avg /= Math.max(result.regressions, 1);
755+
result.average /= Math.max(result.regressions + result.improvements + result.unchanged, 1);
756+
};
757+
computeAvg(result.all);
758+
computeAvg(result.filtered);
759+
728760
return result;
729761

730762
}
@@ -736,6 +768,12 @@ <h2>Comparing <span id="stat-header">{{stat}}</span> between <span id="before">{
736768
prLink(pr) {
737769
return `https://github.com/rust-lang/rust/pull/${pr}`;
738770
},
771+
signIfNegative(pct) {
772+
if (pct >= 0) {
773+
return "";
774+
}
775+
return "-";
776+
},
739777
percentClass(pct) {
740778
let klass = "";
741779
if (pct > 1) {

0 commit comments

Comments
 (0)