Skip to content

Commit d95009b

Browse files
committed
More cleanup
1 parent 8eb17be commit d95009b

File tree

1 file changed

+37
-86
lines changed

1 file changed

+37
-86
lines changed

site/static/compare.html

+37-86
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ <h1>Comparing <span id="stat-header">instructions:u</span> between <span id="bef
289289
v-bind:class="percentClass(bench.maxPct)">{{bench.maxPct}}%{{isDodgyBench(bench)
290290
? "?" : ""}}</span></td>
291291
</tr>
292-
<template v-for="run in bench.fields">
292+
<template v-for="run in bench.variants">
293293
<tr>
294294
<td>{{ run.casename }}</td>
295295
<td>
@@ -364,19 +364,19 @@ <h1>Comparing <span id="stat-header">instructions:u</span> between <span id="bef
364364
data: null
365365
},
366366
computed: {
367-
notContinuous: function () {
367+
notContinuous() {
368368
return !this.data.is_contiguous;
369369
},
370-
prevLink: function () {
370+
prevLink() {
371371
return `/compare.html?start=${this.data.prev}&end=${this.data.a.commit}`;
372372
},
373-
nextLink: function () {
373+
nextLink() {
374374
return `/compare.html?start=${this.data.b.commit}&end=${this.data.next}`;
375375
},
376-
compareLink: function () {
376+
compareLink() {
377377
return `https://github.com/rust-lang/rust/compare/${this.data.a.commit}...${this.data.b.commit}`;
378378
},
379-
benches: function () {
379+
benches() {
380380
let data = this.data;
381381
const filter = this.filter;
382382

@@ -394,101 +394,51 @@ <h1>Comparing <span id="stat-header">instructions:u</span> between <span id="bef
394394
return true;
395395
}
396396
}
397-
function toFields(name) {
398-
let source = data.a.data[name] || data.b.data[name];
399-
let maxLength = 0;
400-
if (data.a.data[name]) {
401-
maxLength = data.a.data[name].length;
402-
}
403-
if (data.b.data[name] && data.b.data[name].length > maxLength) {
404-
maxLength = data.b.data[name].length;
405-
}
406-
407-
let keys = {};
408-
if (data.a.data[name]) {
409-
for (let i = 0; i < data.a.data[name].length; i++) {
410-
if (!keys[data.a.data[name][i][0]]) {
411-
keys[data.a.data[name][i][0]] = {};
412-
}
413-
keys[data.a.data[name][i][0]].aIdx = i;
414-
}
415-
}
416-
if (data.b.data[name]) {
417-
for (let i = 0; i < data.b.data[name].length; i++) {
418-
if (!keys[data.b.data[name][i][0]]) {
419-
keys[data.b.data[name][i][0]] = {};
420-
}
421-
keys[data.b.data[name][i][0]].bIdx = i;
422-
}
423-
}
424-
425-
let fields = [];
426-
for (let key in keys) {
427-
let aIdx = keys[key].aIdx;
428-
let bIdx = keys[key].bIdx;
429-
let datumA = null;
430-
let datumB = null;
431-
if (aIdx != undefined && bIdx != undefined) {
432-
datumA = data.a.data[name][aIdx][1];
433-
datumB = data.b.data[name][bIdx][1];
434-
} else if (aIdx != undefined) {
435-
datumA = data.a.data[name][aIdx][1];
436-
} else if (bIdx != undefined) {
437-
datumB = data.b.data[name][bIdx][1];
438-
} else {
439-
// should be unreachable
440-
}
441-
442-
443-
function percentChg(a, b) {
444-
if (a && b) {
445-
return 100 * (b - a) / a;
446-
} else {
447-
return null;
448-
}
449-
}
397+
function toVariants(name) {
398+
let variants = [];
399+
for (let d of data.a.data[name]) {
400+
const key = d[0];
401+
const datumA = d[1];
402+
const datumB = data.b.data[name].find(x => x[0] == key)[1];
450403

451404
let isDodgy = false;
452405
if (data.variance) {
453406
let variance = data.variance[name + "-" + key];
454407
isDodgy = !!(variance && variance.description && variance.description.type != "Normal");
455408
}
456409
if (shouldShowBuild(key)) {
457-
fields.push({
410+
variants.push({
458411
casename: key,
459412
datumA,
460413
datumB,
461-
percent: percentChg(datumA, datumB).toFixed(1),
414+
percent: (100 * (datumB - datumA) / datumA).toFixed(1),
462415
isDodgy,
463416
});
464417
}
465418
}
466419

467-
return fields;
420+
return variants;
468421
}
469422

470-
let textNames = unique([
471-
...Object.keys(data.a.data),
472-
...Object.keys(data.b.data),
473-
]);
474-
475-
let fields =
476-
textNames.
423+
let benches =
424+
Object.keys(data.a.data).
477425
filter(n => filter.name && filter.name.trim() ? n.includes(filter.name.trim()) : true).
478-
map(name => { return { name, fields: toFields(name) } }).filter(b => b.fields.length > 0);
426+
map(name => { return { name, variants: toVariants(name) } }).filter(b => b.variants.length > 0);
479427

480-
for (let field of fields) {
481-
let pcts = field.fields.map(field => parseFloat(field.percent))
428+
for (let bench of benches) {
429+
let pcts = bench.variants.map(field => parseFloat(field.percent))
482430
.filter(p => p != undefined && p != null);
483-
field.maxPct = Math.max(...pcts).toFixed(1);
484-
field.minPct = Math.min(...pcts).toFixed(1);
431+
bench.maxPct = Math.max(...pcts).toFixed(1);
432+
bench.minPct = Math.min(...pcts).toFixed(1);
485433
let sum = pcts.reduce((a, b) => a + b, 0);
486-
let avg = sum / pcts.length;
487-
field.avgPct = avg.toFixed(1);
488-
field.maxCasenameLen = Math.max(...field.fields.map(f => f.casename.length));
434+
bench.avgPct = (sum / pcts.length).toFixed(1);
435+
bench.maxCasenameLen = Math.max(...bench.variants.map(f => f.casename.length));
489436
}
437+
const largestChange = a => Math.max(Math.abs(a.minPct), Math.abs(a.maxPct));
490438

491-
return fields;
439+
benches.sort((a, b) => largestChange(b) - largestChange(a));
440+
441+
return benches;
492442
},
493443
bootstrapTotals() {
494444
const sum = bootstrap => Object.entries(bootstrap).map(e => e[1] / 1e9).reduce((sum, next) => sum + next, 0);
@@ -513,13 +463,13 @@ <h1>Comparing <span id="stat-header">instructions:u</span> between <span id="bef
513463
},
514464
},
515465
methods: {
516-
short: function (comparison) {
466+
short(comparison) {
517467
return shortCommit(comparison.commit);
518468
},
519-
prLink: function (pr) {
469+
prLink(pr) {
520470
return `https://github.com/rust-lang/rust/pull/${pr}`;
521471
},
522-
percentClass: function (pct) {
472+
percentClass(pct) {
523473
let klass = "";
524474
if (pct > 1) {
525475
klass = 'positive';
@@ -560,11 +510,11 @@ <h1>Comparing <span id="stat-header">instructions:u</span> between <span id="bef
560510
return result;
561511
},
562512
isDodgyBench(bench) {
563-
return bench.fields.some(f => f.isDodgy);
513+
return bench.variants.some(f => f.isDodgy);
564514
},
565515
},
566516
watch: {
567-
data: function (newVal, oldVal) {
517+
data(newVal, oldVal) {
568518
if (newVal && !oldVal) {
569519
this.$nextTick(() => {
570520
for (let element of document.querySelectorAll(".toggle-table")) {
@@ -574,7 +524,8 @@ <h1>Comparing <span id="stat-header">instructions:u</span> between <span id="bef
574524
}
575525
}
576526
}
577-
})
527+
});
528+
578529
function toggleBenchGroup(element) {
579530
let next = element.parentElement.parentElement.nextElementSibling;
580531
let inBody = []
@@ -587,6 +538,7 @@ <h1>Comparing <span id="stat-header">instructions:u</span> between <span id="bef
587538
next = next.nextElementSibling;
588539
}
589540
}
541+
590542
function toggleFilters(id, toggle) {
591543
let styles = document.getElementById(id).style;
592544
let indicator = document.getElementById(toggle);
@@ -608,12 +560,10 @@ <h1>Comparing <span id="stat-header">instructions:u</span> between <span id="bef
608560
toggleFilters("search-content", "search-toggle-indicator");
609561
};
610562

611-
612563
function unique(arr) {
613564
return arr.filter((value, idx) => arr.indexOf(value) == idx);
614565
}
615566

616-
617567
function shortCommit(commit) {
618568
return commit.substring(0, 8);
619569
}
@@ -638,6 +588,7 @@ <h1>Comparing <span id="stat-header">instructions:u</span> between <span id="bef
638588
b && (document.getElementById("after").innerHTML = shorten(b));
639589
stat && (document.getElementById("stat-header").innerHTML = stat);
640590
}
591+
641592
function findQueryParam(name) {
642593
let urlParams = window.location.search.substring(1).split("&").map(x => x.split("="));
643594
let pair = urlParams.find(x => x[0] === name)

0 commit comments

Comments
 (0)