@@ -96,7 +96,7 @@ pub async fn handle_triage(
96
96
. clone ( )
97
97
. summarize_by_category ( & benchmark_map) ;
98
98
let mut result = String :: from ( "**Summary**:\n \n " ) ;
99
- write_summary_table ( & primary, & secondary, false , & mut result) ;
99
+ write_summary_table ( & primary, & secondary, false , true , & mut result) ;
100
100
result
101
101
}
102
102
None => String :: from ( "**ERROR**: no data found for end bound" ) ,
@@ -513,7 +513,7 @@ async fn write_triage_summary(
513
513
let link = & compare_link ( start, end) ;
514
514
write ! ( & mut result, " [(Comparison Link)]({})\n \n " , link) . unwrap ( ) ;
515
515
516
- write_summary_table ( & primary, & secondary, false , & mut result) ;
516
+ write_summary_table ( & primary, & secondary, false , true , & mut result) ;
517
517
518
518
result
519
519
}
@@ -523,8 +523,21 @@ pub fn write_summary_table(
523
523
primary : & ArtifactComparisonSummary ,
524
524
secondary : & ArtifactComparisonSummary ,
525
525
with_footnotes : bool ,
526
+ include_metric : bool ,
526
527
result : & mut String ,
527
528
) {
529
+ let metric = include_metric
530
+ . then ( || {
531
+ primary
532
+ . relevant_comparisons
533
+ . first ( )
534
+ . or ( secondary. relevant_comparisons . first ( ) )
535
+ . map ( |m| m. metric . as_str ( ) )
536
+ } )
537
+ . flatten ( )
538
+ // we want at least 10 spaces to accommodate "count[^2]"
539
+ . unwrap_or ( " " ) ;
540
+
528
541
fn render_stat < F : FnOnce ( ) -> Option < f64 > > ( count : usize , calculate : F ) -> String {
529
542
let value = if count > 0 { calculate ( ) } else { None } ;
530
543
value
@@ -627,7 +640,7 @@ pub fn write_summary_table(
627
640
// This code attempts to space the table cells evenly so that the data is
628
641
// easy to read for anyone who is viewing the Markdown source.
629
642
let column_labels = [
630
- " " . to_string ( ) , // we want at least 10 spaces to accommodate "count[^2]"
643
+ format ! ( "({metric})" ) ,
631
644
format ! ( "mean{}" , if with_footnotes { "[^1]" } else { "" } ) ,
632
645
"max" . to_string ( ) ,
633
646
format ! ( "count{}" , if with_footnotes { "[^2]" } else { "" } ) ,
@@ -1383,8 +1396,6 @@ mod tests {
1383
1396
( Category :: Primary , 1.0 , 3.0 ) ,
1384
1397
] ,
1385
1398
r#"
1386
- | | mean[^1] | max | count[^2] |
1387
- |:----------:|:--------:|:---:|:---------:|
1388
1399
| Regressions ❌ <br /> (primary) | 146.7% | 200.0% | 3 |
1389
1400
| Regressions ❌ <br /> (secondary) | - | - | 0 |
1390
1401
| Improvements ✅ <br /> (primary) | - | - | 0 |
@@ -1404,8 +1415,6 @@ mod tests {
1404
1415
( Category :: Primary , 4.0 , 1.0 ) ,
1405
1416
] ,
1406
1417
r#"
1407
- | | mean[^1] | max | count[^2] |
1408
- |:----------:|:--------:|:---:|:---------:|
1409
1418
| Regressions ❌ <br /> (primary) | - | - | 0 |
1410
1419
| Regressions ❌ <br /> (secondary) | - | - | 0 |
1411
1420
| Improvements ✅ <br /> (primary) | -71.7% | -80.0% | 3 |
@@ -1425,8 +1434,6 @@ mod tests {
1425
1434
( Category :: Secondary , 4.0 , 1.0 ) ,
1426
1435
] ,
1427
1436
r#"
1428
- | | mean[^1] | max | count[^2] |
1429
- |:----------:|:--------:|:---:|:---------:|
1430
1437
| Regressions ❌ <br /> (primary) | - | - | 0 |
1431
1438
| Regressions ❌ <br /> (secondary) | - | - | 0 |
1432
1439
| Improvements ✅ <br /> (primary) | - | - | 0 |
@@ -1446,8 +1453,6 @@ mod tests {
1446
1453
( Category :: Secondary , 1.0 , 3.0 ) ,
1447
1454
] ,
1448
1455
r#"
1449
- | | mean[^1] | max | count[^2] |
1450
- |:----------:|:--------:|:---:|:---------:|
1451
1456
| Regressions ❌ <br /> (primary) | - | - | 0 |
1452
1457
| Regressions ❌ <br /> (secondary) | 146.7% | 200.0% | 3 |
1453
1458
| Improvements ✅ <br /> (primary) | - | - | 0 |
@@ -1468,8 +1473,6 @@ mod tests {
1468
1473
( Category :: Primary , 4.0 , 1.0 ) ,
1469
1474
] ,
1470
1475
r#"
1471
- | | mean[^1] | max | count[^2] |
1472
- |:----------:|:--------:|:---:|:---------:|
1473
1476
| Regressions ❌ <br /> (primary) | 150.0% | 200.0% | 2 |
1474
1477
| Regressions ❌ <br /> (secondary) | - | - | 0 |
1475
1478
| Improvements ✅ <br /> (primary) | -62.5% | -75.0% | 2 |
@@ -1492,8 +1495,6 @@ mod tests {
1492
1495
( Category :: Primary , 4.0 , 1.0 ) ,
1493
1496
] ,
1494
1497
r#"
1495
- | | mean[^1] | max | count[^2] |
1496
- |:----------:|:--------:|:---:|:---------:|
1497
1498
| Regressions ❌ <br /> (primary) | 150.0% | 200.0% | 2 |
1498
1499
| Regressions ❌ <br /> (secondary) | 100.0% | 100.0% | 1 |
1499
1500
| Improvements ✅ <br /> (primary) | -62.5% | -75.0% | 2 |
@@ -1512,8 +1513,6 @@ mod tests {
1512
1513
( Category :: Primary , 5.0 , 6.0 ) ,
1513
1514
] ,
1514
1515
r#"
1515
- | | mean[^1] | max | count[^2] |
1516
- |:----------:|:--------:|:---:|:---------:|
1517
1516
| Regressions ❌ <br /> (primary) | 20.0% | 20.0% | 1 |
1518
1517
| Regressions ❌ <br /> (secondary) | - | - | 0 |
1519
1518
| Improvements ✅ <br /> (primary) | -50.0% | -50.0% | 1 |
@@ -1532,8 +1531,6 @@ mod tests {
1532
1531
( Category :: Primary , 6.0 , 5.0 ) ,
1533
1532
] ,
1534
1533
r#"
1535
- | | mean[^1] | max | count[^2] |
1536
- |:----------:|:--------:|:---:|:---------:|
1537
1534
| Regressions ❌ <br /> (primary) | 100.0% | 100.0% | 1 |
1538
1535
| Regressions ❌ <br /> (secondary) | - | - | 0 |
1539
1536
| Improvements ✅ <br /> (primary) | -16.7% | -16.7% | 1 |
@@ -1587,7 +1584,8 @@ mod tests {
1587
1584
let secondary = ArtifactComparisonSummary :: summarize ( secondary_comparisons) ;
1588
1585
1589
1586
let mut result = String :: new ( ) ;
1590
- write_summary_table ( & primary, & secondary, true , & mut result) ;
1591
- assert_eq ! ( result, expected) ;
1587
+ write_summary_table ( & primary, & secondary, true , true , & mut result) ;
1588
+ let header = "| (instructions:u) | mean[^1] | max | count[^2] |\n |:----------------:|:--------:|:---:|:---------:|\n " ;
1589
+ assert_eq ! ( result, format!( "{header}{expected}" ) ) ;
1592
1590
}
1593
1591
}
0 commit comments