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 <[email protected]> > --- > 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
