Open
Description
Currently, cargo bench
prints output along these lines:
test bls12_381::bench_pairing_final_exponentiation ... bench: 1,753,823 ns/iter (+/- 30,711)
test bls12_381::bench_pairing_full ... bench: 2,641,309 ns/iter (+/- 35,774)
test bls12_381::bench_pairing_g1_preparation ... bench: 13,801 ns/iter (+/- 293)
test bls12_381::bench_pairing_g2_preparation ... bench: 233,722 ns/iter (+/- 11,857)
test bls12_381::bench_pairing_miller_loop ... bench: 618,548 ns/iter (+/- 26,680)
test bls12_381::ec::g1::bench_g1_add_assign ... bench: 1,189 ns/iter (+/- 53)
The values are derived here, from which we can determine that the key value is a median, which is good! Unfortunately, the other value given is a range, which is not particularly useful:
- As-printed, it looks like an error or standard deviation; either mis-interpretation would mean that the uncertainty is overstated by at least a factor of two!
- The range itself, in the context of a
+/-
, only makes sense if the underlying benchmark has a normal (Gaussian) distribution. But depending on the benchmark, that may not be the case. Say the output is100 +/- 20
: there is no way to distinguish between a(min, max)
of(81, 101)
versus(99, 119)
, which should be interpreted very differently by the programmer.
I would personally like to gain access to the min and max values for the purpose of CI benchmarks (e.g. here), so I'd like to see those values exposed either by default, or accessible via a flag. Alternatively (or in addition), the range should be replaced with a standard deviation or standard error.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
No status