pub fn bench(label: &'static str) -> impl Drop
Expand description
Utility for writing benchmark tests.
A benchmark test looks like this:
ⓘ
#[test]
fn benchmark_foo() {
if skip_slow_tests() { return; }
let data = bench_fixture::some_fixture();
let analysis = some_setup();
let hash = {
let _b = bench("foo");
actual_work(analysis)
};
assert_eq!(hash, 92);
}
- We skip benchmarks by default, to save time. Ideal benchmark time is 800 – 1500 ms in debug.
- We don’t count preparation as part of the benchmark
- The benchmark itself returns some kind of numeric hash. The hash is used as a sanity check that some code is actually run. Otherwise, it’s too easy to win the benchmark by just doing nothing.