From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 7844) id F1D373858C52; Tue, 4 Apr 2023 18:53:17 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org F1D373858C52 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1680634397; bh=T8EEvviBkUR6bMj6iCDfeNxEJk6653gkFVAb9efaYxI=; h=From:To:Subject:Date:From; b=yrlmnYVsDZzUjigtMHkuR5AQj8fPYuLarDlEFryHWC5SXJ5mF0u6lgjyWuwPlW23Y U/6Tg8Np+xdTIwRx+c84WMajwKrAqfgC67vweBYuz1vl1R61yCTEEi7nTfZwvihgIa oIQK2WUwPVA9fJyWVbmdMo7YmbXlcqCrZhwZNAcQ= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Noah Goldstein To: glibc-cvs@sourceware.org Subject: [glibc] compare_strings.py : Add --gmean flag X-Act-Checkin: glibc X-Git-Author: Nisha Menon X-Git-Refname: refs/heads/master X-Git-Oldrev: 856bab7717ef6d1033fd7cbf7cfb2ddefbfffb07 X-Git-Newrev: 51a121eb36d7cf016005413b4fe6995df2b7cef3 Message-Id: <20230404185317.F1D373858C52@sourceware.org> Date: Tue, 4 Apr 2023 18:53:17 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=51a121eb36d7cf016005413b4fe6995df2b7cef3 commit 51a121eb36d7cf016005413b4fe6995df2b7cef3 Author: Nisha Menon Date: Mon Apr 3 10:11:05 2023 -0400 compare_strings.py : Add --gmean flag To calculate geometric mean for string benchmark results. Signed-off-by: Nisha Poyarekar Diff: --- benchtests/scripts/compare_strings.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/benchtests/scripts/compare_strings.py b/benchtests/scripts/compare_strings.py index 1195a6c741..a4ab3e42c2 100755 --- a/benchtests/scripts/compare_strings.py +++ b/benchtests/scripts/compare_strings.py @@ -21,6 +21,7 @@ Given a string benchmark result file, print a table with comparisons with a baseline. The baseline is the first function, which typically is the builtin function. """ +import math import matplotlib as mpl mpl.use('Agg') @@ -83,7 +84,8 @@ def draw_graph(f, v, ifuncs, results): pylab.savefig('%s-%s.png' % (f, v), bbox_inches='tight') -def process_results(results, attrs, funcs, base_func, graph, no_diff, no_header): +def process_results(results, attrs, funcs, base_func, graph, no_diff, + no_header, gmean): """ Process results and print them Args: @@ -132,6 +134,8 @@ def process_results(results, attrs, funcs, base_func, graph, no_diff, no_header) print("%36s%s" % (' ', '\t'.join(ifuncs))) print("=" * 120) + mean_row = [0 for i in range(len(ifuncs))] + total=0 graph_res = {} for res in results['functions'][f]['results']: try: @@ -144,8 +148,11 @@ def process_results(results, attrs, funcs, base_func, graph, no_diff, no_header) key = ', '.join(attr_list) sys.stdout.write('%36s: ' % key) graph_res[key] = res['timings'] + for t in res['timings']: if selected[i]: + if gmean: + mean_row[i] = mean_row[i]+math.log(t) sys.stdout.write ('%12.2f' % t) if not no_diff: if i != base_index: @@ -159,6 +166,12 @@ def process_results(results, attrs, funcs, base_func, graph, no_diff, no_header) if graph: draw_graph(f, v, results['functions'][f]['ifuncs'], graph_res) + if gmean: + print("=" * 120) + total = len(results['functions'][f]['results']) + sys.stdout.write ('Geo-mean (for %s inputs)'%total) + for m in mean_row: + sys.stdout.write ('%12.2f' % (math.exp(m/total))) def main(args): """Program Entry Point @@ -180,7 +193,8 @@ def main(args): funcs = None results = parse_file(args.input, args.schema) - process_results(results, attrs, funcs, base_func, args.graph, args.no_diff, args.no_header) + process_results(results, attrs, funcs, base_func, args.graph, args.no_diff, + args.no_header, args.gmean) return os.EX_OK @@ -207,6 +221,8 @@ if __name__ == '__main__': help='Do not print the difference from baseline.') parser.add_argument('--no-header', action='store_true', help='Do not print the header.') + parser.add_argument('--gmean', action='store_true', + help='Print the geometric mean at the end of the output.') args = parser.parse_args() sys.exit(main(args))