227
227
align-items : center;
228
228
width : 20% ;
229
229
}
230
+ .summary-wide {
231
+ width : 35% ;
232
+ }
230
233
</ style >
231
234
< script src ="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js "> </ script >
232
235
</ head >
262
265
</ div >
263
266
</ div >
264
267
< input id ="submit " type ="submit " value ="Submit " onclick ="submitSettings(); return false; ">
268
+ </ div >
265
269
</ fieldset >
266
270
< h2 > Comparing < span id ="stat-header "> {{stat}}</ span > between < span id ="before "> {{before}}</ span > and
267
271
< span id ="after "> {{after}}</ span >
@@ -405,28 +409,33 @@ <h2>Comparing <span id="stat-header">{{stat}}</span> between <span id="before">{
405
409
< div v-for ="summaryPair in Object.entries(summary) " style ="display: flex; ">
406
410
< span style ="font-weight: bold; width: 30%; margin-left: 15%; text-transform: capitalize; "> {{
407
411
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 ">
410
414
{{summaryPair[1].regressions.toString().padStart(3, " ")}}
411
415
< svg style ="width:18px;height:18px " viewBox ="0 0 24 24 ">
412
416
< 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 ">
414
418
</ path >
415
419
</ svg >
420
+ (+{{(summaryPair[1].regressions_avg).toFixed(2)}}%)
416
421
</ span >
417
422
< span class ="summary ">
418
423
{{summaryPair[1].unchanged.toString().padStart(3, " ")}}
419
424
< svg style ="width:18px;height:18px " viewBox ="0 0 24 24 ">
420
425
< path d ="M22,12L18,8V11H3V13H18V16L22,12Z "> </ path >
421
426
</ svg >
422
427
</ span >
423
- < span class ="summary negative ">
428
+ < span class ="summary summary-wide negative ">
424
429
{{summaryPair[1].improvements.toString().padStart(3, " ")}}
425
430
< svg style ="width:18px;height:18px " viewBox ="0 0 24 24 ">
426
431
< 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 ">
428
433
</ path >
429
434
</ svg >
435
+ ({{(summaryPair[1].improvements_avg).toFixed(2)}}%)
436
+ </ span >
437
+ < span class ="summary " v-bind:class ="percentClass(summaryPair[1].average) ">
438
+ {{ signIfNegative(summaryPair[1].average) }}{{ (summaryPair[1].average * 100).toFixed(2) }}%
430
439
</ span >
431
440
</ div >
432
441
</ div >
@@ -706,25 +715,48 @@ <h2>Comparing <span id="stat-header">{{stat}}</span> between <span id="before">{
706
715
sum [ testCaseString ( next ) ] = true ;
707
716
return sum ;
708
717
} , { } ) ;
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
+
710
740
let result = { all : { ...newCount } , filtered : { ...newCount } }
711
741
for ( let d of this . data . comparisons ) {
712
742
const testCase = testCaseString ( d )
713
- const scenario = d . scenario ;
714
743
const datumA = d . statistics [ 0 ] ;
715
744
const datumB = d . statistics [ 1 ] ;
716
745
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 ) ;
726
749
}
727
750
}
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
+
728
760
return result ;
729
761
730
762
}
@@ -736,6 +768,12 @@ <h2>Comparing <span id="stat-header">{{stat}}</span> between <span id="before">{
736
768
prLink ( pr ) {
737
769
return `https://github.com/rust-lang/rust/pull/${ pr } ` ;
738
770
} ,
771
+ signIfNegative ( pct ) {
772
+ if ( pct >= 0 ) {
773
+ return "" ;
774
+ }
775
+ return "-" ;
776
+ } ,
739
777
percentClass ( pct ) {
740
778
let klass = "" ;
741
779
if ( pct > 1 ) {
0 commit comments