mirror of
git://sourceware.org/git/glibc.git
synced 2025-03-06 20:58:33 +01:00
compare_strings.py : Add --gmean flag
To calculate geometric mean for string benchmark results. Signed-off-by: Nisha Poyarekar <nisha.s.menon@gmail.com>
This commit is contained in:
parent
856bab7717
commit
51a121eb36
1 changed files with 18 additions and 2 deletions
|
@ -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
|
baseline. The baseline is the first function, which typically is the builtin
|
||||||
function.
|
function.
|
||||||
"""
|
"""
|
||||||
|
import math
|
||||||
import matplotlib as mpl
|
import matplotlib as mpl
|
||||||
mpl.use('Agg')
|
mpl.use('Agg')
|
||||||
|
|
||||||
|
@ -83,7 +84,8 @@ def draw_graph(f, v, ifuncs, results):
|
||||||
pylab.savefig('%s-%s.png' % (f, v), bbox_inches='tight')
|
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
|
""" Process results and print them
|
||||||
|
|
||||||
Args:
|
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("%36s%s" % (' ', '\t'.join(ifuncs)))
|
||||||
print("=" * 120)
|
print("=" * 120)
|
||||||
|
|
||||||
|
mean_row = [0 for i in range(len(ifuncs))]
|
||||||
|
total=0
|
||||||
graph_res = {}
|
graph_res = {}
|
||||||
for res in results['functions'][f]['results']:
|
for res in results['functions'][f]['results']:
|
||||||
try:
|
try:
|
||||||
|
@ -144,8 +148,11 @@ def process_results(results, attrs, funcs, base_func, graph, no_diff, no_header)
|
||||||
key = ', '.join(attr_list)
|
key = ', '.join(attr_list)
|
||||||
sys.stdout.write('%36s: ' % key)
|
sys.stdout.write('%36s: ' % key)
|
||||||
graph_res[key] = res['timings']
|
graph_res[key] = res['timings']
|
||||||
|
|
||||||
for t in res['timings']:
|
for t in res['timings']:
|
||||||
if selected[i]:
|
if selected[i]:
|
||||||
|
if gmean:
|
||||||
|
mean_row[i] = mean_row[i]+math.log(t)
|
||||||
sys.stdout.write ('%12.2f' % t)
|
sys.stdout.write ('%12.2f' % t)
|
||||||
if not no_diff:
|
if not no_diff:
|
||||||
if i != base_index:
|
if i != base_index:
|
||||||
|
@ -159,6 +166,12 @@ def process_results(results, attrs, funcs, base_func, graph, no_diff, no_header)
|
||||||
if graph:
|
if graph:
|
||||||
draw_graph(f, v, results['functions'][f]['ifuncs'], graph_res)
|
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):
|
def main(args):
|
||||||
"""Program Entry Point
|
"""Program Entry Point
|
||||||
|
@ -180,7 +193,8 @@ def main(args):
|
||||||
funcs = None
|
funcs = None
|
||||||
|
|
||||||
results = parse_file(args.input, args.schema)
|
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
|
return os.EX_OK
|
||||||
|
|
||||||
|
|
||||||
|
@ -207,6 +221,8 @@ if __name__ == '__main__':
|
||||||
help='Do not print the difference from baseline.')
|
help='Do not print the difference from baseline.')
|
||||||
parser.add_argument('--no-header', action='store_true',
|
parser.add_argument('--no-header', action='store_true',
|
||||||
help='Do not print the header.')
|
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()
|
args = parser.parse_args()
|
||||||
sys.exit(main(args))
|
sys.exit(main(args))
|
||||||
|
|
Loading…
Add table
Reference in a new issue