Criterion-perf-events

This is a measurement plugin for Criterion.rs to measure events of the Linux perf interface.

Supported Events

Criterion-perf-events uses the perfcnt crate and supports events provided by this crate. If you are interested in more details, please take a look at the events listed here:

Example

The following code shows on how to count last level cache misses.

```rust extern crate criterionperfevents; extern crate perfcnt;

fn fibonaccislow(: usize) {} fn fibonaccifast(: usize) {}

use criterion::{criteriongroup, criterionmain, BenchmarkId, Criterion}; use criterionperfevents::Perf; use perfcnt::linux::HardwareEventType as Hardware; use perfcnt::linux::PerfCounterBuilderLinux as Builder;

fn bench(c: &mut Criterion) { let mut group = c.benchmark_group("fibonacci");

for i in 0..20 {
    group.bench_function(BenchmarkId::new("slow", i), |b| b.iter(|| fibonacci_slow(i)));
    group.bench_function(BenchmarkId::new("fast", i), |b| b.iter(|| fibonacci_fast(i)));
}

group.finish()

}

criteriongroup!( name = mybench; config = Criterion::default().withmeasurement(Perf::new(Builder::fromhardwareevent(Hardware::CacheMisses))); targets = bench ); criterionmain!(my_bench); ```