From b4eae244826a0fb8907ef50c8ef9a38da40b719d Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Sat, 8 Mar 2025 21:06:20 +0100 Subject: Vendor perf event --- perf-event/examples/println-cpi.rs | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 perf-event/examples/println-cpi.rs (limited to 'perf-event/examples/println-cpi.rs') diff --git a/perf-event/examples/println-cpi.rs b/perf-event/examples/println-cpi.rs new file mode 100644 index 0000000..6524c37 --- /dev/null +++ b/perf-event/examples/println-cpi.rs @@ -0,0 +1,30 @@ +fn main() -> std::io::Result<()> { + use perf_event::events::Hardware; + use perf_event::{Builder, Group}; + + let mut group = Group::new()?; + let cycles = Builder::new() + .group(&mut group) + .kind(Hardware::CPU_CYCLES) + .build()?; + let insns = Builder::new() + .group(&mut group) + .kind(Hardware::INSTRUCTIONS) + .build()?; + + let vec = (0..=51).collect::>(); + + group.enable()?; + println!("{:?}", vec); + group.disable()?; + + let counts = group.read()?; + println!( + "cycles / instructions: {} / {} ({:.2} cpi)", + counts[&cycles], + counts[&insns], + (counts[&cycles] as f64 / counts[&insns] as f64) + ); + + Ok(()) +} -- cgit v1.3.1