On 18.09.20 20:19, Vladimir Sementsov-Ogievskiy wrote: > Introduce dynamic float precision and use percentage to show delta. > > Signed-off-by: Vladimir Sementsov-Ogievskiy <vsement...@virtuozzo.com> > --- > scripts/simplebench/simplebench.py | 26 +++++++++++++++++++++++++- > 1 file changed, 25 insertions(+), 1 deletion(-) > > diff --git a/scripts/simplebench/simplebench.py > b/scripts/simplebench/simplebench.py > index 716d7fe9b2..56d3a91ea2 100644 > --- a/scripts/simplebench/simplebench.py > +++ b/scripts/simplebench/simplebench.py > @@ -79,10 +79,34 @@ def bench_one(test_func, test_env, test_case, count=5, > initial_run=True): > return result > > > +def format_float(x): > + res = round(x) > + if res >= 100: > + return str(res) > + > + res = f'{x:.1f}' > + if len(res) >= 4: > + return res > + > + return f'{x:.2f}'
This itches me to ask for some log() calculation. Like: %.*f' % (math.ceil(math.log10(99.95 / x)), x) (For three significant digits) > +def format_percent(x): > + x *= 100 > + > + res = round(x) > + if res >= 10: > + return str(res) > + > + return f'{x:.1f}' if res >= 1 else f'{x:.2f}' Same here. (Also, why not append a % sign in this function?) > def ascii_one(result): > """Return ASCII representation of bench_one() returned dict.""" > if 'average' in result: > - s = '{:.2f} +- {:.2f}'.format(result['average'], result['delta']) > + avg = result['average'] > + delta_pr = result['delta'] / avg > + s = f'{format_float(avg)}±{format_percent(delta_pr)}%' Pre-existing, but isn’t the ± range generally assumed to be the standard deviation? Max > if 'n-failed' in result: > s += '\n({} failed)'.format(result['n-failed']) > return s >
signature.asc
Description: OpenPGP digital signature