diff --git a/examples/benchmark/Cargo.toml b/examples/benchmark/Cargo.toml
index 81438038316f1b576b71c6f15038f4afcd7b637a..ddefc4acbf96287eeeb7b89ab59a9fa9f746e52b 100644
--- a/examples/benchmark/Cargo.toml
+++ b/examples/benchmark/Cargo.toml
@@ -7,6 +7,9 @@ license = "Apache-2.0"
 keywords = ["chip-8", "emulator", "rust", "benchmark"]
 edition = "2018"
 
+[dependencies]
+time = { version = "0.3" }
+
 [dependencies.chip-ahoyto]
 path = "../.."
 
diff --git a/examples/benchmark/src/main.rs b/examples/benchmark/src/main.rs
index 5ef3f0face4af6e7a2ef616ba6db3725790f11a1..fa8ed161a3a739b8037fe2581a43965e12ea7ab1 100644
--- a/examples/benchmark/src/main.rs
+++ b/examples/benchmark/src/main.rs
@@ -1,7 +1,8 @@
 use chip_ahoyto::chip8::Chip8;
 use std::{fs::File, io::Read};
+use time::Instant;
 
-const CYCLE_COUNT: u32 = 1_000_000_000;
+const CYCLE_COUNT: u64 = 10_000_000_000;
 
 fn main() {
     let rom = read_file("./resources/pong.ch8");
@@ -10,11 +11,21 @@ fn main() {
     chip8.reset_hard();
     chip8.load_rom(&rom);
 
-    println!("Running {} cycles", CYCLE_COUNT);
+    let instant = Instant::now();
+
+    let cycles = CYCLE_COUNT;
+
+    println!("Running {} cycles", cycles);
 
     for _ in 0..CYCLE_COUNT {
         chip8.tick();
     }
+
+    let duration_s = instant.elapsed().as_seconds_f32();
+    let cycles_second = cycles as f32 / duration_s;
+    let mega_second = cycles_second / 1000.0 / 1000.0;
+
+    println!("Took {} seconds or {:.2} MHz CPU", duration_s, mega_second);
 }
 
 fn read_file(path: &str) -> Vec<u8> {