On Mon, Mar 2, 2020 at 10:05 PM Aleksandar Markovic <aleksandar.m.m...@gmail.com> wrote: > > > > > > >> + > > >> + > > >> +def ascii_one(result): > > >> + """Return ASCII representation of bench_one() returned dict.""" > > >> + if 'average' in result: > > >> + s = '{:.2f} +- {:.2f}'.format(result['average'], > > >> result['delta']) > > >> + if 'n-failed' in result: > > >> + s += '\n({} failed)'.format(result['n-failed']) > > >> + return s > > >> + else: > > >> + return 'FAILED' > > > > > > I think it would be visually clearer if "+-" was printed without any > > > space between it and the following number, using something > > > like this: > > > > > > s = ' {:.2f} +-{:.2f}'.format(result['average'], result['delta']) > > > > > > The resulting table would look like: > > > > > > ---------- ------------- ------------- ------------- > > > backup-1 backup-2 mirror > > > ssd -> ssd 0.43 +-0.00 4.48 +-0.06 4.38 +-0.02 > > > ssd -> hdd 10.60 +-0.08 10.69 +-0.18 10.57 +-0.05 > > > ssd -> nbd 33.81 +-0.37 10.67 +-0.17 10.07 +-0.07 > > > ---------- ------------- ------------- ------------- > > > > > > But, this is just cosmetics. > > > > > > With or without the suggestion above: > > > > > > Reviewed-by: Aleksandar Markovic <amarko...@wavecomp.com> > > > > Thanks for reviewing! > > > > Agree with this change, but I don't think it worth to resend the series for > > this one space) > > Hope it may be applied with pull request.. > > > > I am an occasional Python programmer, and I felt comfortable > reviewing your series, but I am not a maintainer of this directory, > and I believe Eduardo or Cleber or other more active Python > contributors would be better choice for selecting this series in > their pull request. > > So, I can't send this series to Peter - Cleber, Eduardo, please > see to it. >
Eduardo, can you perhaps consider this series for selecting into your pull request? Thanks, Aleksandar > Yours, > Aleksandar > > > > > > >> + > > >> + > > >> +def bench(test_func, test_envs, test_cases, *args, **vargs): > > >> + """Fill benchmark table > > >> + > > >> + test_func -- benchmarking function, see bench_one for description > > >> + test_envs -- list of test environments, see bench_one > > >> + test_cases -- list of test cases, see bench_one > > >> + args, vargs -- additional arguments for bench_one > > >> + > > >> + Returns dict with the following fields: > > >> + 'envs': test_envs > > >> + 'cases': test_cases > > >> + 'tab': filled 2D array, where cell [i][j] is bench_one result > > >> for > > >> + test_cases[i] for test_envs[j] (i.e., rows are test > > >> cases and > > >> + columns are test environments) > > >> + """ > > >> + tab = {} > > >> + results = { > > >> + 'envs': test_envs, > > >> + 'cases': test_cases, > > >> + 'tab': tab > > >> + } > > >> + n = 1 > > >> + n_tests = len(test_envs) * len(test_cases) > > >> + for env in test_envs: > > >> + for case in test_cases: > > >> + print('Testing {}/{}: {} :: {}'.format(n, n_tests, > > >> + env['id'], > > >> case['id'])) > > >> + if case['id'] not in tab: > > >> + tab[case['id']] = {} > > >> + tab[case['id']][env['id']] = bench_one(test_func, env, case, > > >> + *args, **vargs) > > >> + n += 1 > > >> + > > >> + print('Done') > > >> + return results > > >> + > > >> + > > >> +def ascii(results): > > >> + """Return ASCII representation of bench() returned dict.""" > > >> + from tabulate import tabulate > > >> + > > >> + tab = [[""] + [c['id'] for c in results['envs']]] > > >> + for case in results['cases']: > > >> + row = [case['id']] > > >> + for env in results['envs']: > > >> + row.append(ascii_one(results['tab'][case['id']][env['id']])) > > >> + tab.append(row) > > >> + > > >> + return tabulate(tab) > > >> -- > > >> 2.21.0 > > >> > > >> > > > > > > -- > > Best regards, > > Vladimir