#perf #perf-events #criterion #linux #benchmark

criterion-linux-perf

A measurement plugin for Criterion.rs that provides measurements using Linux's perf interface

1 unstable release

0.1.0 Dec 22, 2020

#424 in Profiling

Apache-2.0/MIT

9KB
135 lines

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.

Dependencies

~9–20MB
~270K SLoC