Skip to content

Commit ee5415c

Browse files
authored
Merge pull request #12222 from graydon/process-stats-dir-reporting-tweaks
Process stats dir reporting tweaks
2 parents 261cf12 + 162aee3 commit ee5415c

File tree

1 file changed

+35
-5
lines changed

1 file changed

+35
-5
lines changed

utils/process-stats-dir.py

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -260,13 +260,29 @@ def write_comparison(args, old_stats, new_stats):
260260
regressions = sum(1 for row in rows if row.delta > 0)
261261

262262
if args.markdown:
263+
264+
def format_field(field, row, args):
265+
if field == 'name' and args.group_by_module:
266+
return re.sub(r'^(\w+)\.', r'\1<br/>', row.name)
267+
elif field == 'delta_pct' and args.github_emoji:
268+
if row.delta_pct > 0:
269+
return str(row.delta_pct) + " :no_entry:"
270+
else:
271+
return str(row.delta_pct) + " :white_check_mark:"
272+
else:
273+
return str(vars(row)[field])
274+
263275
out = args.output
264276
out.write(' | '.join(OutputRow._fields))
265277
out.write('\n')
266278
out.write(' | '.join('---:' for _ in OutputRow._fields))
267279
out.write('\n')
268280
for row in rows:
269-
out.write(' | '.join(str(v) for v in row))
281+
name = row.name
282+
if args.group_by_module:
283+
name
284+
out.write(' | '.join(format_field(f, row, args)
285+
for f in OutputRow._fields))
270286
out.write('\n')
271287
else:
272288
out = csv.DictWriter(args.output, OutputRow._fields,
@@ -295,11 +311,18 @@ def compare_stats_dirs(args):
295311
if len(args.remainder) != 2:
296312
raise ValueError("Expected exactly 2 stats-dirs")
297313

314+
vargs = vars(args)
315+
if args.select_stats_from_csv_baseline is not None:
316+
b = read_stats_dict_from_csv(args.select_stats_from_csv_baseline)
317+
if args.group_by_module:
318+
pat = re.compile('^\w+\.')
319+
vargs['select_stat'] = set(re.sub(pat, '', k) for k in b.keys())
320+
else:
321+
vargs['select_stat'] = b.keys()
322+
298323
(old, new) = args.remainder
299-
old_stats = merge_all_jobstats(load_stats_dir(old, **vars(args)),
300-
**vars(args))
301-
new_stats = merge_all_jobstats(load_stats_dir(new, **vars(args)),
302-
**vars(args))
324+
old_stats = merge_all_jobstats(load_stats_dir(old, **vargs), **vargs)
325+
new_stats = merge_all_jobstats(load_stats_dir(new, **vargs), **vargs)
303326

304327
return write_comparison(args, old_stats.stats, new_stats.stats)
305328

@@ -344,6 +367,9 @@ def main():
344367
default=[],
345368
action="append",
346369
help="Select specific statistics")
370+
parser.add_argument("--select-stats-from-csv-baseline",
371+
type=argparse.FileType('rb', 0), default=None,
372+
help="Select statistics present in a CSV baseline")
347373
parser.add_argument("--exclude-timers",
348374
default=False,
349375
action="store_true",
@@ -364,6 +390,10 @@ def main():
364390
default=False,
365391
action="store_true",
366392
help="Write output in markdown table format")
393+
parser.add_argument("--github-emoji",
394+
default=False,
395+
action="store_true",
396+
help="Add github-emoji indicators to markdown")
367397
modes = parser.add_mutually_exclusive_group(required=True)
368398
modes.add_argument("--catapult", action="store_true",
369399
help="emit a 'catapult'-compatible trace of events")

0 commit comments

Comments
 (0)