Skip to content

Commit ab2ece0

Browse files
committed
[libc++] Compute geomean in compare-benchmarks
1 parent 228dae7 commit ab2ece0

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

libcxx/utils/compare-benchmarks

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,16 @@ def plain_text_comparison(data, metric, baseline_name=None, candidate_name=None)
6565
"""
6666
data = data.replace(numpy.nan, None) # avoid NaNs in tabulate output
6767
headers = ['Benchmark', baseline_name, candidate_name, 'Difference', '% Difference']
68-
fmt = (None, '.2f', '.2f', '.2f', '.2f')
69-
table = data[['benchmark', f'{metric}_0', f'{metric}_1', 'difference', 'percent']].set_index('benchmark')
70-
return tabulate.tabulate(table, headers=headers, floatfmt=fmt, numalign='right')
68+
fmt = (None, '.2f', '.2f', '.2f', '.2%')
69+
table = data[['benchmark', f'{metric}_0', f'{metric}_1', 'difference', 'percent']]
70+
71+
# Compute the geomean and report on their difference
72+
geomean_0 = statistics.geometric_mean(data[f'{metric}_0'])
73+
geomean_1 = statistics.geometric_mean(data[f'{metric}_1'])
74+
geomean_row = ['Geomean', geomean_0, geomean_1, (geomean_1 - geomean_0), (geomean_1 - geomean_0) / geomean_0]
75+
table.loc[len(table)] = geomean_row
76+
77+
return tabulate.tabulate(table.set_index('benchmark'), headers=headers, floatfmt=fmt, numalign='right')
7178

7279
def create_chart(data, metric, subtitle=None, series_names=None):
7380
"""
@@ -154,7 +161,7 @@ def main(argv):
154161
# If we have exactly two data sets, compute additional info in new columns
155162
if len(lnt_inputs) == 2:
156163
data['difference'] = data[f'{args.metric}_1'] - data[f'{args.metric}_0']
157-
data['percent'] = 100 * (data['difference'] / data[f'{args.metric}_0'])
164+
data['percent'] = data['difference'] / data[f'{args.metric}_0']
158165

159166
if args.filter is not None:
160167
keeplist = [b for b in data['benchmark'] if re.search(args.filter, b) is not None]

0 commit comments

Comments
 (0)