19 releases (12 breaking)

new 0.13.0 Apr 4, 2025
0.12.0 Mar 28, 2025
0.11.0 Mar 28, 2025
0.8.3 May 4, 2024

#93 in Visualization

Download history 124/week @ 2024-12-15 115/week @ 2024-12-22 81/week @ 2024-12-29 235/week @ 2025-01-05 113/week @ 2025-01-12 36/week @ 2025-01-19 24/week @ 2025-01-26 87/week @ 2025-02-02 36/week @ 2025-02-09 52/week @ 2025-02-16 78/week @ 2025-02-23 51/week @ 2025-03-02 58/week @ 2025-03-09 108/week @ 2025-03-16 573/week @ 2025-03-23 222/week @ 2025-03-30

963 downloads per month
Used in 10 crates

MIT license

87KB
2K SLoC

diol is a benchmarking library for rust.

getting started

add the following to your Cargo.toml.

[dev-dependencies]
diol = "0.6.0"
[[bench]]
name = "my_benchmark"
harness = false

then in benches/my_benchmark.rs.

use diol::prelude::*;
fn main() -> std::io::Result<()> {
    let mut bench = Bench::new(BenchConfig::from_args()?);
    bench.register(slice_times_two, [4, 8, 16, 128, 1024]);
    bench.run()?;
    Ok(())
}
fn slice_times_two(bencher: Bencher, len: usize) {
    let mut v = vec![0.0_f64; len];
    bencher.bench(|| {
        for x in &mut v {
            *x *= 2.0;
        }
        black_box(&mut v);
    });
}

run the benchmark with cargo bench, or cargo bench --bench my_benchmark if you have multiple benchmarks you can also pass in benchmark options using cargo bench --bench my_benchmark -- [OPTIONS...]

╭─────────────────┬──────┬───────────┬───────────┬───────────┬───────────╮
│ benchmark       │ args │   fastest │    median │      mean │    stddev │
├─────────────────┼──────┼───────────┼───────────┼───────────┼───────────┤
│ slice_times_two │    429.61 ns │  34.38 ns │  34.83 ns │   1.62 ns │
├─────────────────┼──────┼───────────┼───────────┼───────────┼───────────┤
│ slice_times_two │    844.17 ns │  53.04 ns │  53.32 ns │   3.25 ns │
├─────────────────┼──────┼───────────┼───────────┼───────────┼───────────┤
│ slice_times_two │   1693.66 ns │ 107.91 ns │ 108.13 ns │   4.11 ns │
├─────────────────┼──────┼───────────┼───────────┼───────────┼───────────┤
│ slice_times_two │  128489.97 ns │ 583.59 ns │ 585.28 ns │  33.15 ns │
├─────────────────┼──────┼───────────┼───────────┼───────────┼───────────┤
│ slice_times_two │ 10243.77 µs │   4.51 µs │   4.53 µs │ 173.44 ns │
╰─────────────────┴──────┴───────────┴───────────┴───────────┴───────────╯

dependencies

the plotters dependency requires the pkg-config, freetype and fontconfig.
to install on Ubuntu, you can use the following command.

sudo apt install pkg-config libfreetype6-dev libfontconfig1-dev

Dependencies

~5–28MB
~388K SLoC