summaryrefslogtreecommitdiff
path: root/perf-event/examples/println-cpi.rs
diff options
context:
space:
mode:
authorDennis Kobert <dennis@kobert.dev>2025-03-08 21:06:20 +0100
committerDennis Kobert <dennis@kobert.dev>2025-03-08 21:07:27 +0100
commitb4eae244826a0fb8907ef50c8ef9a38da40b719d (patch)
treeb57014575b3dfc38c5f25115357253d037b3189c /perf-event/examples/println-cpi.rs
parent06dd6966ad27f0c52c56092dd2f45a06541e5c6c (diff)
Vendor perf event
Diffstat (limited to 'perf-event/examples/println-cpi.rs')
-rw-r--r--perf-event/examples/println-cpi.rs30
1 files changed, 30 insertions, 0 deletions
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::<Vec<_>>();
+
+ 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(())
+}