scripts: Added --small-table, renamed -%/--percent-diff
So now three levels of diff info available: -d/--diff (default): bench (0 added, 0 removed) othroughput nthroughput dthroughput bench_wt_seq+write 29405.8 29405.7 -0.1 (-0.0%) bench_wt_random+write 957.3 957.3 +0.0 bench_wt_logging+write 2153.4 2153.4 +0.0 bench_wt_many+write 6855.4 453.6 -6401.8 (-93.4%) bench_rt_seq+read 23939212.8 23939212.7 -0.1 (-0.0%) bench_rt_random+read 6461004.1 6461004.1 +0.0 bench_rt_logging+read 4164.0 4163.9 -0.1 (-0.0%) bench_rt_many+read 392368.5 392380.4 +11.9 (+0.0%) TOTAL 30836121.3 30829731.1 -6390.2 (-0.0%) -d/--diff + --small-diff: bench othroughput nthroughput bench_wt_seq+write 29405.8 29405.7 (-0.0%) bench_wt_random+write 957.3 957.3 bench_wt_logging+write 2153.4 2153.4 bench_wt_many+write 6855.4 453.6 (-93.4%) bench_rt_seq+read 23939212.8 23939212.7 (-0.0%) bench_rt_random+read 6461004.1 6461004.1 bench_rt_logging+read 4164.0 4163.9 (-0.0%) bench_rt_many+read 392368.5 392380.4 (+0.0%) TOTAL 30836121.3 30829731.1 (-0.0%) -d/--diff + -%/--percent-diff: bench throughput bench_wt_seq+write 29405.7 (-0.0%) bench_wt_random+write 957.3 (+0.0%) bench_wt_logging+write 2153.4 (+0.0%) bench_wt_many+write 453.6 (-93.4%) bench_rt_seq+read 23939212.7 (-0.0%) bench_rt_random+read 6461004.1 (+0.0%) bench_rt_logging+read 4163.9 (-0.0%) bench_rt_many+read 392380.4 (+0.0%) TOTAL 30829731.1 (-0.0%) The motivation for this is easier rendering of bench diffs, where we have a relatively long list (8, for now) of benches, with large enough numbers that including all of old + new + delta ends up a bit much.
This commit is contained in:
+41
-12
@@ -969,7 +969,8 @@ def table(Result, results, diff_results=None, *,
|
||||
sort=None,
|
||||
depth=1,
|
||||
hot=None,
|
||||
percent=False,
|
||||
small_diff=False,
|
||||
percent_diff=False,
|
||||
all=False,
|
||||
compare=None,
|
||||
hlabel=None,
|
||||
@@ -1023,11 +1024,18 @@ def table(Result, results, diff_results=None, *,
|
||||
' (%d added, %d removed)' % (
|
||||
sum(1 for n in table if n not in diff_table),
|
||||
sum(1 for n in diff_table if n not in table))
|
||||
if diff_results is not None and not percent else '')
|
||||
if diff_results is not None
|
||||
and not percent_diff
|
||||
and not small_diff
|
||||
else '')
|
||||
if not small_header else '']
|
||||
if diff_results is None or percent:
|
||||
if diff_results is None or percent_diff:
|
||||
for k in fields:
|
||||
header.append(hlabel(k) if hlabel is not None else k)
|
||||
elif small_diff:
|
||||
for k in fields:
|
||||
header.append('o'+(hlabel(k) if hlabel is not None else k))
|
||||
header.append('n'+(hlabel(k) if hlabel is not None else k))
|
||||
else:
|
||||
for k in fields:
|
||||
header.append('o'+(hlabel(k) if hlabel is not None else k))
|
||||
@@ -1069,8 +1077,8 @@ def table(Result, results, diff_results=None, *,
|
||||
types[k].ratio(
|
||||
getattr(r, k, None),
|
||||
getattr(compare_r, k, None)))))
|
||||
# percent entry?
|
||||
elif percent:
|
||||
# percent diff entry?
|
||||
elif percent_diff:
|
||||
for k in fields:
|
||||
entry.append(
|
||||
(getattr(r, k).table()
|
||||
@@ -1082,6 +1090,23 @@ def table(Result, results, diff_results=None, *,
|
||||
types[k].ratio(
|
||||
getattr(r, k, None),
|
||||
getattr(diff_r, k, None)))))
|
||||
# small diff entry?
|
||||
elif small_diff:
|
||||
for k in fields:
|
||||
entry.append(getattr(diff_r, k).table()
|
||||
if getattr(diff_r, k, None) is not None
|
||||
else types[k].none)
|
||||
entry.append(
|
||||
(getattr(r, k).table()
|
||||
if getattr(r, k, None) is not None
|
||||
else types[k].none,
|
||||
(lambda t: ['+∞%'] if t == +mt.inf
|
||||
else ['-∞%'] if t == -mt.inf
|
||||
else ['%+.1f%%' % (100*t)] if t
|
||||
else [])(
|
||||
types[k].ratio(
|
||||
getattr(r, k, None),
|
||||
getattr(diff_r, k, None)))))
|
||||
# diff entry?
|
||||
else:
|
||||
for k in fields:
|
||||
@@ -1689,22 +1714,26 @@ if __name__ == "__main__":
|
||||
parser.add_argument(
|
||||
'-d', '--diff',
|
||||
help="Specify CSV/JSON file to diff against.")
|
||||
parser.add_argument(
|
||||
'--small-diff',
|
||||
action='store_true',
|
||||
help="Don't show diff delta.")
|
||||
# need a special Action here because this % causes problems
|
||||
class StoreTruePercent(argparse._StoreTrueAction):
|
||||
class StoreTruePercentDiff(argparse._StoreTrueAction):
|
||||
def format_usage(self):
|
||||
return '-%%'
|
||||
parser.add_argument(
|
||||
'-%', '--percent',
|
||||
action=StoreTruePercent,
|
||||
'-%', '--percent-diff',
|
||||
action=StoreTruePercentDiff,
|
||||
help="Only show percentage change, not a full diff.")
|
||||
parser.add_argument(
|
||||
'-C', '--compare',
|
||||
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
||||
help="Compare results to the row matching this by pattern.")
|
||||
parser.add_argument(
|
||||
'-a', '--all',
|
||||
action='store_true',
|
||||
help="Show all, not just the ones that changed.")
|
||||
parser.add_argument(
|
||||
'-C', '--compare',
|
||||
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
||||
help="Compare results to the row matching this by pattern.")
|
||||
parser.add_argument(
|
||||
'-b', '--by',
|
||||
action='append',
|
||||
|
||||
Reference in New Issue
Block a user