Skip to main content

println_cpi/
println-cpi.rs

1fn main() -> std::io::Result<()> {
2    use perf_event::events::Hardware;
3    use perf_event::{Builder, Group};
4
5    let mut group = Group::new()?;
6    let cycles = Builder::new()
7        .group(&mut group)
8        .kind(Hardware::CPU_CYCLES)
9        .build()?;
10    let insns = Builder::new()
11        .group(&mut group)
12        .kind(Hardware::INSTRUCTIONS)
13        .build()?;
14
15    let vec = (0..=51).collect::<Vec<_>>();
16
17    group.enable()?;
18    println!("{:?}", vec);
19    group.disable()?;
20
21    let counts = group.read()?;
22    println!(
23        "cycles / instructions: {} / {} ({:.2} cpi)",
24        counts[&cycles],
25        counts[&insns],
26        (counts[&cycles] as f64 / counts[&insns] as f64)
27    );
28
29    Ok(())
30}