Expand description
§Sponsor
If you or your company find Divan valuable, consider sponsoring on GitHub or donating via PayPal. Sponsorships help me progress on what’s possible with benchmarking in Rust.
§Guide
A guide is being worked on. In the meantime, see:
§Getting Started
-
Add the following to your project’s
Cargo.toml
:[dev-dependencies] divan = "0.1.13" [[bench]] name = "example" harness = false
-
Create a benchmarks file at
benches/example.rs
1 with your benchmarking code:fn main() { // Run registered benchmarks. divan::main(); } // Define a `fibonacci` function and register it for benchmarking. #[divan::bench] fn fibonacci() -> u64 { fn compute(n: u64) -> u64 { if n <= 1 { 1 } else { compute(n - 2) + compute(n - 1) } } compute(divan::black_box(10)) }
-
Run your benchmarks with
cargo bench
:example fastest │ slowest │ median │ mean │ samples │ iters ╰─ fibonacci 196.1 ns │ 217 ns │ 197.5 ns │ 198.1 ns │ 100 │ 3200
See #[divan::bench]
for info on benchmark function registration.
§Examples
Practical example benchmarks can be found in the examples/benches
directory. These can be benchmarked locally by running:
git clone https://github.com/nvzqz/divan.git
cd divan
cargo bench -q -p examples --all-features
More thorough usage examples can be found in the #[divan::bench]
documentation.
§License
Like the Rust project, this library may be used under either the MIT License or Apache License (Version 2.0).
Within your crate directory, i.e.
$CARGO_MANIFEST_DIR
↩
Modules§
- Count values processed in each iteration to measure throughput.
Structs§
- Measures
GlobalAlloc
memory usage. - Enables contextual benchmarking in
#[divan::bench]
. - The benchmark runner.
Functions§
- Prevents compiler optimizations on a value.
- Runs all registered benchmarks.
Attribute Macros§
- Registers a benchmarking function.
- Registers a benchmarking group.