@@ -238,59 +238,74 @@ <h1>Comparing <span id="stat-header">instructions:u</span> between <span id="bef
238
238
</ div >
239
239
</ fieldset >
240
240
< div id ="content " style ="margin-top: 15px ">
241
- < div v-if ="data ">
242
- < div v-if ="notContinuous "> Warning: The start and end are not adjacent!</ div >
243
- < a v-bind:href ="compareLink "> compare</ a >
244
- < a v-if ="data.prev " v-bind:href ="prevLink "> ←</ a >
245
- < div >
246
- < span > {{data.a.date}}</ span >
247
- < span > ({{short(data.a)}})</ span >
248
- </ div >
249
- < div >
250
- < span > {{data.b.date}}</ span >
251
- < span > ({{short(data.b)}})</ span >
252
- </ div >
253
- < a v-if ="data.next " v-bind:href ="nextLink "> →</ a >
254
- < a v-if ="data.a.pr " v-bind:href ="prLink(data.a.pr) "> #{{data.a.pr}}</ a >
255
- < a v-if ="data.b.pr " v-bind:href ="prLink(data.b.pr) "> #{{data.b.pr}}</ a >
256
- < table class ="compare " style ="font-size: medium !important; ">
257
- < tbody >
258
- < template v-for ="bench in benches ">
259
- < tr data-field-start ="true ">
260
- < th style ="width: 19em; ">
261
- < details class ="toggle-table " v-on:toggle ="benchGroupToggle ">
262
- < summary > {{ bench.name }}</ summary >
263
- </ details >
264
- </ th >
265
- < td > avg: < span > ??</ span > </ td >
266
- < td > min: < span > ??</ span > </ td >
267
- < td > max: < span > ??</ span > </ td >
241
+ < table v-if ="data " class ="compare " style ="font-size: medium !important; ">
242
+ < thead >
243
+ < tr >
244
+ < td v-if ="notContinuous " colspan ="4 " style ="text-align:center; "> < b > Warning</ b > : The start and end
245
+ are not adjacent!</ td >
246
+ </ tr >
247
+ < tr >
248
+ < th >
249
+ < a v-bind:href ="compareLink "> compare</ a >
250
+ </ th >
251
+ < th >
252
+ < a v-if ="data.prev " v-bind:href ="prevLink "> ←</ a >
253
+ {{formatDate(data.a.date)}}
254
+ (< a > {{short(data.a)}}</ a > )
255
+ </ th >
256
+ < th >
257
+ {{formatDate(data.b.date)}}
258
+ (< a > {{short(data.b)}}</ a > )
259
+ < a v-if ="data.next " v-bind:href ="nextLink "> →</ a >
260
+ </ th >
261
+ < th > % change</ th >
262
+ </ tr >
263
+ < tr >
264
+ < th > </ th >
265
+ < th style ="text-align: left; "> < a v-if ="data.a.pr " v-bind:href ="prLink(data.a.pr) "> #{{data.a.pr}}</ a >
266
+ </ th >
267
+ < th style ="text-align: left; "> < a v-if ="data.b.pr " v-bind:href ="prLink(data.b.pr) "> #{{data.b.pr}}</ a >
268
+ </ th >
269
+ </ tr >
270
+ </ thead >
271
+ < tbody >
272
+ < template v-for ="bench in benches ">
273
+ < tr data-field-start ="true ">
274
+ < th >
275
+ < details class ="toggle-table " v-on:toggle ="benchGroupToggle ">
276
+ < summary > {{ trimBenchName(bench.name) }}</ summary >
277
+ </ details >
278
+ </ th >
279
+ < td > avg: < span v-bind:class ="percentClass(bench.avg_pct) "> {{bench.avg_pct}}</ span > </ td >
280
+ < td > min: < span v-bind:class ="percentClass(bench.min_pct) "> {{bench.min_pct}}</ span > </ td >
281
+ < td > max: < span
282
+ v-bind:class ="percentClass(bench.max_pct) "> {{bench.max_pct}}%{{isDodgyBench(bench)
283
+ ? "?" : ""}}</ span > </ td >
284
+ </ tr >
285
+ < template v-for ="run in bench.fields ">
286
+ < tr >
287
+ < td > {{ run.casename }}</ td >
288
+ < td >
289
+ < a v-bind:href ="detailedQueryLink(data.a.commit, bench.name, run.casename) ">
290
+ {{ run.datum_a }}
291
+ </ a >
292
+ </ td >
293
+ < td >
294
+ < a v-bind:href ="detailedQueryLink(data.b.commit, bench.name, run.casename) ">
295
+ {{ run.datum_b }}
296
+ </ a >
297
+ </ td >
298
+ < td >
299
+ < a v-bind:href ="percentLink(data.b.commit, data.a.commit, bench.name, run.casename) ">
300
+ < span v-bind:class ="percentClass(run.percent) "> {{ run.percent }}%{{run.isDodgy ? "?"
301
+ : ""}}</ span >
302
+ </ a >
303
+ </ td >
268
304
</ tr >
269
- < template v-for ="run in bench.fields ">
270
- < tr >
271
- < td > {{ run.casename }}</ td >
272
- < td >
273
- < a v-bind:href ="detailedQueryLink(data.a.commit, bench.name, run.casename) ">
274
- {{ run.datum_a }}
275
- </ a >
276
- </ td >
277
- < td >
278
- < a v-bind:href ="detailedQueryLink(data.b.commit, bench.name, run.casename) ">
279
- {{ run.datum_b }}
280
- </ a >
281
- </ td >
282
- < td >
283
- < a v-bind:class ="percentClass(run.percent) "
284
- v-bind:href ="percentLink(data.b.commit, data.a.commit, bench.name, run.casename) ">
285
- {{ run.percent }}%
286
- </ a >
287
- </ td >
288
- </ tr >
289
- </ template >
290
305
</ template >
291
- </ tbody >
292
- </ table >
293
- </ div >
306
+ </ template >
307
+ </ tbody >
308
+ </ table >
294
309
</ div >
295
310
< br >
296
311
< div id ="as-of "> </ div >
@@ -324,7 +339,6 @@ <h1>Comparing <span id="stat-header">instructions:u</span> between <span id="bef
324
339
benches : function ( ) {
325
340
let data = this . data ;
326
341
327
-
328
342
function shouldShowBuild ( name ) {
329
343
if ( name == "full" ) {
330
344
return document . querySelector ( "#build-full" ) . checked ;
@@ -383,18 +397,26 @@ <h1>Comparing <span id="stat-header">instructions:u</span> between <span id="bef
383
397
} else {
384
398
// should be unreachable
385
399
}
400
+
401
+ let isDodgy = false ;
402
+ if ( data . variance ) {
403
+ let variance = data . variance [ name + "-" + key ] ;
404
+ isDodgy = ! ! ( variance && variance . description && variance . description . type != "Normal" ) ;
405
+ }
386
406
if ( shouldShowBuild ( key ) ) {
387
407
fields . push ( {
388
408
casename : key ,
389
409
datum_a,
390
410
datum_b,
391
411
percent : percent_chg ( datum_a , datum_b ) . toFixed ( 1 ) ,
412
+ isDodgy,
392
413
} ) ;
393
414
}
394
415
}
395
416
396
417
return fields ;
397
418
}
419
+
398
420
let test_names = unique ( [
399
421
...Object . keys ( data . a . data ) ,
400
422
...Object . keys ( data . b . data ) ,
@@ -410,6 +432,32 @@ <h1>Comparing <span id="stat-header">instructions:u</span> between <span id="bef
410
432
// .map(name => ({ name, is_bootstrap: true, fields: to_fields_bootstrap(name) })),
411
433
...test_names . map ( name => { return { name, fields : to_fields ( name ) } } )
412
434
] ;
435
+
436
+ for ( let field of fields ) {
437
+ let pcts = field . fields . map ( field => parseFloat ( field . percent ) )
438
+ . filter ( p => p != undefined && p != null ) ;
439
+ field . max_pct = Math . max ( ...pcts ) . toFixed ( 1 ) ;
440
+ field . min_pct = Math . min ( ...pcts ) . toFixed ( 1 ) ;
441
+ field . farthest_pct = Math . max ( ...pcts . map ( p => Math . abs ( p ) ) ) ;
442
+ let sum = pcts . reduce ( ( a , b ) => a + b , 0 ) ;
443
+ let avg = sum / pcts . length ;
444
+ field . avg_pct = avg . toFixed ( 1 ) ;
445
+ field . max_casename_len = Math . max ( ...field . fields . map ( f => f . casename . length ) ) ;
446
+ }
447
+
448
+ fields . sort ( ( a , b ) => {
449
+ if ( a . is_bootstrap == b . is_bootstrap ) {
450
+ return b . farthest_pct - a . farthest_pct ;
451
+ }
452
+ else {
453
+ if ( a . is_bootstrap ) {
454
+ return 1 ;
455
+ }
456
+ else {
457
+ return - 1 ;
458
+ }
459
+ }
460
+ } ) ;
413
461
return fields ;
414
462
}
415
463
} ,
@@ -442,9 +490,22 @@ <h1>Comparing <span id="stat-header">instructions:u</span> between <span id="bef
442
490
} ,
443
491
benchGroupToggle ( e ) {
444
492
const element = e . target ;
445
- toggleBenchGroup ( element )
446
- }
493
+ toggleBenchGroup ( element ) ;
494
+ } ,
495
+ formatDate ( date ) {
496
+ return print_date ( new Date ( date ) ) ;
497
+ } ,
498
+ trimBenchName ( name ) {
499
+ let result = name . substring ( 0 , 25 )
500
+ if ( result != name ) {
501
+ result = result + "..." ;
447
502
503
+ }
504
+ return result ;
505
+ } ,
506
+ isDodgyBench ( bench ) {
507
+ return bench . fields . some ( f => f . isDodgy ) ;
508
+ }
448
509
} ,
449
510
watch : {
450
511
data : function ( newVal , oldVal ) {
@@ -497,7 +558,7 @@ <h1>Comparing <span id="stat-header">instructions:u</span> between <span id="bef
497
558
return ( i < 10 ) ? "0" + i : "" + i ;
498
559
}
499
560
500
- return `${ date . getUTCFullYear ( ) } -${ pad_str ( date . getUTCMonth ( ) + 1 ) } -${ pad_str ( date . getUTCDate ( ) ) } ` ;
561
+ return `${ date . getUTCFullYear ( ) } -${ pad_str ( date . getUTCMonth ( ) + 1 ) } -${ pad_str ( date . getUTCDate ( ) ) } ` ;
501
562
}
502
563
503
564
function unique ( arr ) {
0 commit comments