criterion-linux-perf

Crates.iocriterion-linux-perf
lib.rscriterion-linux-perf
version0.1.0
sourcesrc
created_at2020-12-22 19:39:03.378219
updated_at2020-12-22 19:39:03.378219
descriptionA measurement plugin for Criterion.rs that provides measurements using Linux's perf interface
homepage
repositoryhttps://github.com/bruceg/criterion-linux-perf
max_upload_size
id326150
size9,210
Bruce Guenter (bruceg)

documentation

README

criterion-linux-perf

This is a measurement plugin for Criterion.rs that provides measurements using Linux's perf interface.

Supported Events

criterion-linux-perf uses the perf-event crate and supports a subset of the events provided by that crate. If you require more events than the current selection, please open an issue to request additions.

Example

The following code shows on how to count branches when creating an empty string:

use criterion::{criterion_group, criterion_main, Criterion};
use criterion_linux_perf::{PerfMeasurement, PerfMode};

fn timeit(crit: &mut Criterion<PerfMeasurement>) {
    crit.bench_function("String::new", |b| b.iter(|| String::new()));
    crit.bench_function("String::from", |b| b.iter(|| String::from("")));
}

criterion_group!(
    name = benches;
    config = Criterion::default().with_measurement(PerfMeasurement::new(PerfMode::Branches));
    targets = timeit
);
criterion_main!(benches);

Other Crates

I am aware of one other crate that provides the same functionality, criterion-perf-events. While it provides a much wider coverage of the available perf event types, it depends on perfcnt which only builds on Rust nightly. This crate depends on perf-event, which does not have that limitation.

Commit count: 12

cargo fmt