Function ra_ap_test_utils::bench[][src]

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.