17 stable releases
2.7.2 | Sep 13, 2024 |
---|---|
2.6.0 | Apr 24, 2024 |
2.4.0 | Feb 26, 2024 |
2.3.3 | Nov 20, 2023 |
1.1.0 | Mar 3, 2023 |
#43 in Profiling
68,975 downloads per month
Used in 50 crates
41KB
965 lines
Installation
cargo add --dev codspeed-criterion-compat
Usage
Let's start with the example from the Criterion.rs documentation,
creating a benchmark suite for the Fibonacci function (in benches/my_benchmark.rs
):
use criterion::{black_box, criterion_group, criterion_main, Criterion};
fn fibonacci(n: u64) -> u64 {
match n {
0 => 1,
1 => 1,
n => fibonacci(n-1) + fibonacci(n-2),
}
}
pub fn criterion_benchmark(c: &mut Criterion) {
c.bench_function("fib 20", |b| b.iter(|| fibonacci(black_box(20))));
}
criterion_group!(benches, criterion_benchmark);
criterion_main!(benches);
The last step in creating the Criterion benchmark is to add the new benchmark target in your Cargo.toml
:
[[bench]]
name = "my_benchmark"
harness = false
Plugging CodSpeed
To allow CodSpeed to interact with this suite as well, you simply need to replace
the imports from the criterion
crate to the codspeed-criterion-compat
crate:
- use criterion::{black_box, criterion_group, criterion_main, Criterion};
+ use codspeed_criterion_compat::{black_box, criterion_group, criterion_main, Criterion};
And that's it! You can now run your benchmark suite with cargo-codspeed
:
$ cargo codspeed build
Finished release [optimized] target(s) in 0.12s
Finished built 1 benchmark suite(s)
$ cargo codspeed run
Collected 1 benchmark suite(s) to run
Running my_benchmark
Using codspeed-criterion-compat v1.0.0 compatibility layer
NOTICE: codspeed is enabled, but no performance measurement will be made since it's running in an unknown environment.
Checked: benches/bencher_example.rs::fib_20 (group: benches)
Done running bencher_example
Finished running 1 benchmark suite(s)
Not supported:
iter_custom
with_filter
Dependencies
~6–24MB
~296K SLoC