36
36
def load_paired_stats_dirs (args ):
37
37
assert (len (args .remainder ) == 2 )
38
38
paired_stats = []
39
- mod = args .select_module
40
- stat = args .select_stat
41
- xt = args .exclude_timers
42
39
(old , new ) = args .remainder
43
40
for p in sorted (os .listdir (old )):
44
41
full_old = os .path .join (old , p )
45
42
full_new = os .path .join (new , p )
46
43
if not (os .path .exists (full_old ) and os .path .isdir (full_old ) and
47
44
os .path .exists (full_new ) and os .path .isdir (full_new )):
48
45
continue
49
- old_stats = load_stats_dir (full_old ,
50
- select_module = mod ,
51
- select_stat = stat ,
52
- exclude_timers = xt )
53
- new_stats = load_stats_dir (full_new ,
54
- select_module = mod ,
55
- select_stat = stat ,
56
- exclude_timers = xt )
46
+ old_stats = load_stats_dir (full_old , ** vars (args ))
47
+ new_stats = load_stats_dir (full_new , ** vars (args ))
57
48
if len (old_stats ) == 0 or len (new_stats ) == 0 :
58
49
continue
59
50
paired_stats .append ((p , (old_stats , new_stats )))
@@ -63,22 +54,14 @@ def load_paired_stats_dirs(args):
63
54
def write_catapult_trace (args ):
64
55
allstats = []
65
56
for path in args .remainder :
66
- allstats += load_stats_dir (path ,
67
- select_module = args .select_module ,
68
- select_stat = args .select_stat ,
69
- exclude_timers = args .exclude_timers )
57
+ allstats += load_stats_dir (path , ** vars (args ))
70
58
json .dump ([s .to_catapult_trace_obj () for s in allstats ], args .output )
71
59
72
60
73
61
def write_lnt_values (args ):
74
62
for d in args .remainder :
75
- stats = load_stats_dir (d ,
76
- select_module = args .select_module ,
77
- select_stat = args .select_stat ,
78
- exclude_timers = args .exclude_timers )
79
- merged = merge_all_jobstats (stats ,
80
- select_module = args .select_module ,
81
- group_by_module = args .group_by_module )
63
+ stats = load_stats_dir (d , ** vars (args ))
64
+ merged = merge_all_jobstats (stats , ** vars (args ))
82
65
j = merged .to_lnt_test_obj (args )
83
66
if args .lnt_submit is None :
84
67
json .dump (j , args .output , indent = 4 )
@@ -107,16 +90,11 @@ def show_paired_incrementality(args):
107
90
out = csv .DictWriter (args .output , fieldnames , dialect = 'excel-tab' )
108
91
out .writeheader ()
109
92
110
- sel = args .select_module
111
93
for (name , (oldstats , newstats )) in load_paired_stats_dirs (args ):
112
94
olddriver = merge_all_jobstats ((x for x in oldstats
113
- if x .is_driver_job ()),
114
- select_module = sel ,
115
- group_by_module = args .group_by_module )
95
+ if x .is_driver_job ()), ** vars (args ))
116
96
newdriver = merge_all_jobstats ((x for x in newstats
117
- if x .is_driver_job ()),
118
- select_module = sel ,
119
- group_by_module = args .group_by_module )
97
+ if x .is_driver_job ()), ** vars (args ))
120
98
if olddriver is None or newdriver is None :
121
99
continue
122
100
oldpct = olddriver .incrementality_percentage ()
@@ -137,10 +115,7 @@ def show_incrementality(args):
137
115
out .writeheader ()
138
116
139
117
for path in args .remainder :
140
- stats = load_stats_dir (path ,
141
- select_module = args .select_module ,
142
- select_stat = args .select_stat ,
143
- exclude_timers = args .exclude_timers )
118
+ stats = load_stats_dir (path , ** vars (args ))
144
119
for s in stats :
145
120
if s .is_driver_job ():
146
121
pct = s .incrementality_percentage ()
@@ -223,16 +198,12 @@ def set_csv_baseline(args):
223
198
with open (args .set_csv_baseline , "wb" ) as f :
224
199
out = csv .DictWriter (f , fieldnames , dialect = 'excel-tab' ,
225
200
quoting = csv .QUOTE_NONNUMERIC )
226
- mod = args .select_module
227
- stat = args .select_stat
228
- xt = args .exclude_timers
229
201
m = merge_all_jobstats ((s for d in args .remainder
230
- for s in load_stats_dir (d ,
231
- select_module = mod ,
232
- select_stat = stat ,
233
- exclude_timers = xt )),
234
- select_module = mod ,
235
- group_by_module = args .group_by_module )
202
+ for s in load_stats_dir (d , ** vars (args ))),
203
+ ** vars (args ))
204
+ if m is None :
205
+ print "no stats found"
206
+ return 1
236
207
changed = 0
237
208
newepoch = int (time .time ())
238
209
for name in sorted (m .stats .keys ()):
@@ -303,16 +274,9 @@ def write_comparison(args, old_stats, new_stats):
303
274
304
275
def compare_to_csv_baseline (args ):
305
276
old_stats = read_stats_dict_from_csv (args .compare_to_csv_baseline )
306
- mod = args .select_module
307
- stat = args .select_stat
308
- xt = args .exclude_timers
309
277
m = merge_all_jobstats ((s for d in args .remainder
310
- for s in load_stats_dir (d ,
311
- select_module = mod ,
312
- select_stat = stat ,
313
- exclude_timers = xt )),
314
- select_module = mod ,
315
- group_by_module = args .group_by_module )
278
+ for s in load_stats_dir (d , ** vars (args ))),
279
+ ** vars (args ))
316
280
old_stats = dict ((k , v ) for (k , (_ , v )) in old_stats .items ())
317
281
new_stats = m .stats
318
282
@@ -325,20 +289,10 @@ def compare_stats_dirs(args):
325
289
raise ValueError ("Expected exactly 2 stats-dirs" )
326
290
327
291
(old , new ) = args .remainder
328
- old_stats = merge_all_jobstats (
329
- load_stats_dir (old ,
330
- select_module = args .select_module ,
331
- select_stat = args .select_stat ,
332
- exclude_timers = args .exclude_timers ),
333
- select_module = args .select_module ,
334
- group_by_module = args .group_by_module )
335
- new_stats = merge_all_jobstats (
336
- load_stats_dir (new ,
337
- select_module = args .select_module ,
338
- select_stat = args .select_stat ,
339
- exclude_timers = args .exclude_timers ),
340
- select_module = args .select_module ,
341
- group_by_module = args .group_by_module )
292
+ old_stats = merge_all_jobstats (load_stats_dir (old , ** vars (args )),
293
+ ** vars (args ))
294
+ new_stats = merge_all_jobstats (load_stats_dir (new , ** vars (args )),
295
+ ** vars (args ))
342
296
343
297
return write_comparison (args , old_stats .stats , new_stats .stats )
344
298
@@ -395,6 +349,10 @@ def main():
395
349
default = False ,
396
350
action = "store_true" ,
397
351
help = "Sort comparison results in descending order" )
352
+ parser .add_argument ("--merge-by" ,
353
+ default = "sum" ,
354
+ type = str ,
355
+ help = "Merge identical metrics by (sum|min|max)" )
398
356
parser .add_argument ("--markdown" ,
399
357
default = False ,
400
358
action = "store_true" ,
0 commit comments