|
From: | Vladimir Sementsov-Ogievskiy |
Subject: | Re: [PATCH v3 1/4] scripts/simplebench: add simplebench.py |
Date: | Tue, 17 Mar 2020 18:01:00 +0300 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1 |
17.03.2020 17:40, Aleksandar Markovic wrote:
On Mon, Mar 2, 2020 at 10:05 PM Aleksandar Markovic <address@hidden> 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 <address@hidden>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?
I saw, he has taken the patches into python-next in: https://github.com/ehabkost/qemu/commits/python-next Hope, pull request will come)
Thanks, AleksandarYours, 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
-- Best regards, Vladimir
[Prev in Thread] | Current Thread | [Next in Thread] |