208
208
text-align : center;
209
209
}
210
210
211
+ # summary {
212
+ border : 1px dashed;
213
+ padding : 4px ;
214
+ border-radius : 6px ;
215
+ }
216
+
211
217
.summary {
212
218
display : flex;
213
219
justify-content : center;
214
220
align-items : center;
215
221
width : 20% ;
216
222
}
217
-
218
- # summary .improvement {
219
- border : 1px solid green;
220
- }
221
-
222
- # summary .regression {
223
- border : 1px solid red;
224
- }
225
223
</ style >
226
224
< script src ="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js "> </ script >
227
225
</ head >
@@ -364,7 +362,8 @@ <h2>Comparing <span id="stat-header">{{stat}}</span> between <span id="before">{
364
362
< span class ="tooltip "> ?
365
363
< span class ="tooltiptext ">
366
364
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.
368
367
</ span >
369
368
</ span >
370
369
</ div >
@@ -373,11 +372,11 @@ <h2>Comparing <span id="stat-header">{{stat}}</span> between <span id="before">{
373
372
</ div >
374
373
</ fieldset >
375
374
< 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%; ">
381
380
< span class ="summary positive ">
382
381
{{summaryPair[1].regressions.toString().padStart(3, " ")}}
383
382
< 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">{
402
401
</ span >
403
402
</ div >
404
403
</ div >
405
- </ template >
404
+ </ div >
406
405
< table id ="benches " class ="compare ">
407
406
< template v-for ="bench in benches ">
408
407
< tbody >
@@ -424,7 +423,7 @@ <h2>Comparing <span id="stat-header">{{stat}}</span> between <span id="before">{
424
423
< a
425
424
v-bind:href ="percentLink(data.b.commit, data.a.commit, bench.name, run.casename) ">
426
425
< span v-bind:class ="percentClass(run.percent) ">
427
- {{ run.percent }}%{{run.isDodgy ? "?" : ""}}
426
+ {{ run.percent.toFixed(2) }}%{{run.isDodgy ? "?" : ""}}
428
427
</ span >
429
428
</ a >
430
429
</ td >
@@ -537,11 +536,7 @@ <h2>Comparing <span id="stat-header">{{stat}}</span> between <span id="before">{
537
536
if ( ! datumB ) {
538
537
continue ;
539
538
}
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 ) ;
545
540
let isDodgy = false ;
546
541
if ( data . variance ) {
547
542
let variance = data . variance [ name + "-" + key ] ;
@@ -565,11 +560,10 @@ <h2>Comparing <span id="stat-header">{{stat}}</span> between <span id="before">{
565
560
Object . keys ( data . a . data ) .
566
561
filter ( n => filter . name && filter . name . trim ( ) ? n . includes ( filter . name . trim ( ) ) : true ) .
567
562
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 ) ;
569
564
const pcts = variants . map ( field => parseFloat ( field . percent ) ) ;
570
565
const maxPct = Math . max ( ...pcts ) . toFixed ( 1 ) ;
571
566
const minPct = Math . min ( ...pcts ) . toFixed ( 1 ) ;
572
- const maxCasenameLen = Math . max ( ...variants . map ( f => f . casename . length ) ) ;
573
567
if ( variants . length > 0 ) {
574
568
variants [ 0 ] . first = true ;
575
569
}
@@ -579,7 +573,6 @@ <h2>Comparing <span id="stat-header">{{stat}}</span> between <span id="before">{
579
573
variants,
580
574
maxPct,
581
575
minPct,
582
- maxCasenameLen,
583
576
} ;
584
577
} ) .
585
578
filter ( b => b . variants . length > 0 ) ;
@@ -654,23 +647,17 @@ <h2>Comparing <span id="stat-header">{{stat}}</span> between <span id="before">{
654
647
if ( ! datumB ) {
655
648
continue ;
656
649
}
657
- let scenarioKind = scenario . substr ( 0 , ( scenario . indexOf ( ":" ) + 1 || scenario . length + 1 ) - 1 ) ;
658
- result [ scenarioKind ] ||= { ...newCount }
659
650
let percent = 100 * ( ( datumB - datumA ) / datumA ) ;
660
651
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 ) ) {
663
653
result . all . regressions += 1 ;
664
654
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 ) ) {
667
656
result . all . improvements += 1 ;
668
657
result . filtered . improvements += filtered [ benchmarkAndProfile ] ?. [ scenario ] || 0 ;
669
- result [ scenarioKind ] . improvements += 1 ;
670
658
} else {
671
659
result . all . unchanged += 1 ;
672
660
result . filtered . unchanged += filtered [ benchmarkAndProfile ] ?. [ scenario ] || 0 ;
673
- result [ scenarioKind ] . unchanged += 1 ;
674
661
}
675
662
}
676
663
}
@@ -742,27 +729,16 @@ <h2>Comparing <span id="stat-header">{{stat}}</span> between <span id="before">{
742
729
variance = this . data . variance [ benchmarkAndProfile + "-" + scenario ] ;
743
730
return ( variance ?. description ?. type ?? "Normal" ) != "Normal" ;
744
731
} ,
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
- }
755
732
} ,
756
733
} ) ;
757
734
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 ;
762
739
} else {
763
- return percent >= 0.2 ;
740
+ return perAbs >= 0.2 ;
764
741
}
765
-
766
742
}
767
743
768
744
function toggleFilters ( id , toggle ) {
0 commit comments