18 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
0.1.1 Dec 16, 2022

#159 in Profiling

Download history 360/week @ 2024-08-16 381/week @ 2024-08-23 583/week @ 2024-08-30 872/week @ 2024-09-06 935/week @ 2024-09-13 801/week @ 2024-09-20 730/week @ 2024-09-27 1604/week @ 2024-10-04 2025/week @ 2024-10-11 2293/week @ 2024-10-18 2473/week @ 2024-10-25 2462/week @ 2024-11-01 2290/week @ 2024-11-08 2093/week @ 2024-11-15 2015/week @ 2024-11-22 2248/week @ 2024-11-29

9,032 downloads per month
Used in 3 crates

MIT/Apache

21KB
458 lines

codspeed-bencher-compat

CI Crates.io Discord CodSpeed Badge

Bencher compatibility layer for CodSpeed

Installation

cargo add --dev codspeed-bencher-compat

Usage

Let's start with the example from the Bencher documentation, creating a benchmark suite for 2 simple functions (in benches/example.rs):

use bencher::{benchmark_group, benchmark_main, Bencher};

fn a(bench: &mut Bencher) {
    bench.iter(|| {
        (0..1000).fold(0, |x, y| x + y)
    })
}

fn b(bench: &mut Bencher) {
    const N: usize = 1024;
    bench.iter(|| {
        vec![0u8; N]
    });

    bench.bytes = N as u64;
}

benchmark_group!(benches, a, b);
benchmark_main!(benches);

The last step in creating the Bencher benchmark is to add the new benchmark target in your Cargo.toml:

[[bench]]
name = "example"
harness = false

Plugging CodSpeed

To allow CodSpeed to interact with this suite as well, you simply need to replace the imports from the bencher crate to the codspeed-bencher-compat crate:

- use bencher::{benchmark_group, benchmark_main, Bencher};
+ use codspeed_bencher_compat::{benchmark_group, benchmark_main, Bencher};

And that's it! You can now run your benchmark suite with 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 example
Using codspeed-bencher-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/example.rs::a (group: benches)
Checked: benches/example.rs::b (group: benches)
        Done running bencher_example
    Finished running 1 benchmark suite(s)

Dependencies

~0.6–11MB
~65K SLoC