@@ -29,6 +29,12 @@ struct Cli {
29
29
#[ arg( long, value_delimiter = ',' ) ]
30
30
prev_json_paths : Option < Vec < PathBuf > > ,
31
31
32
+ /// Display names for each metrics file (optional).
33
+ /// If provided, must be same length and in same order as `json-paths`.
34
+ /// Otherwise, the app program name will be used.
35
+ #[ arg( long, value_delimiter = ',' ) ]
36
+ names : Option < Vec < String > > ,
37
+
32
38
/// Path to write the output JSON in BMF format
33
39
#[ arg( long) ]
34
40
output_json : Option < PathBuf > ,
@@ -55,10 +61,21 @@ fn main() -> Result<()> {
55
61
} else {
56
62
vec ! [ None ; args. json_paths. len( ) ]
57
63
} ;
64
+ let names = args. names . unwrap_or_default ( ) ;
65
+ let mut names = if names. len ( ) == args. json_paths . len ( ) {
66
+ names
67
+ } else {
68
+ vec ! [ "" . to_string( ) ; args. json_paths. len( ) ]
69
+ } ;
58
70
let mut aggregated_metrics = Vec :: new ( ) ;
59
71
let mut md_paths = Vec :: new ( ) ;
60
72
let mut output = BenchmarkOutput :: default ( ) ;
61
- for ( metrics_path, prev_metrics_path) in args. json_paths . into_iter ( ) . zip_eq ( prev_json_paths) {
73
+ for ( ( metrics_path, prev_metrics_path) , name) in args
74
+ . json_paths
75
+ . into_iter ( )
76
+ . zip_eq ( prev_json_paths)
77
+ . zip_eq ( & mut names)
78
+ {
62
79
let db = MetricDb :: new ( & metrics_path) ?;
63
80
let grouped = GroupedMetrics :: new ( & db, "group" ) ?;
64
81
let mut aggregated = grouped. aggregate ( ) ;
@@ -71,8 +88,10 @@ fn main() -> Result<()> {
71
88
aggregated. set_diff ( prev_aggregated. as_ref ( ) . unwrap ( ) ) ;
72
89
}
73
90
}
74
-
75
- output. insert ( & aggregated. name ( ) , aggregated. to_bencher_metrics ( ) ) ;
91
+ if name. is_empty ( ) {
92
+ * name = aggregated. name ( ) ;
93
+ }
94
+ output. insert ( name, aggregated. to_bencher_metrics ( ) ) ;
76
95
let mut writer = Vec :: new ( ) ;
77
96
aggregated. write_markdown ( & mut writer, VM_METRIC_NAMES ) ?;
78
97
@@ -95,8 +114,12 @@ fn main() -> Result<()> {
95
114
if let Some ( command) = args. command {
96
115
match command {
97
116
Commands :: Summary ( cmd) => {
98
- let summary =
99
- GithubSummary :: new ( & aggregated_metrics, & md_paths, & cmd. benchmark_results_link ) ;
117
+ let summary = GithubSummary :: new (
118
+ & names,
119
+ & aggregated_metrics,
120
+ & md_paths,
121
+ & cmd. benchmark_results_link ,
122
+ ) ;
100
123
let mut writer = Vec :: new ( ) ;
101
124
summary. write_markdown ( & mut writer) ?;
102
125
if let Some ( path) = cmd. summary_md_path {
0 commit comments