From 059f8f07c1c39a48f6964f59a83b0cd7f9bfe16b Mon Sep 17 00:00:00 2001 From: Leo dev Date: Thu, 29 Jan 2026 09:59:06 +0100 Subject: [PATCH] Nanosecond benchmarking --- src/engine/benchmark.rs | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/src/engine/benchmark.rs b/src/engine/benchmark.rs index df8c700..ce096d3 100644 --- a/src/engine/benchmark.rs +++ b/src/engine/benchmark.rs @@ -16,7 +16,7 @@ impl Benchmark { impl Engine for Benchmark { fn run) -> View + Send + Sync + 'static>(&self, component: F) { - let mut times: Vec = Vec::new(); + let mut times: Vec = Vec::new(); let cx = self.init(component); let start = Instant::now(); @@ -25,7 +25,7 @@ impl Engine for Benchmark { let start = Instant::now(); self.render(&cx); let end = Instant::now(); - times.push(end.duration_since(start).as_millis() as usize); + times.push(end.duration_since(start).as_nanos() as u64); self.0.render_delay(); } @@ -36,33 +36,27 @@ impl Engine for Benchmark { execute!(stdout(), MoveTo(0, 0)).unwrap(); println!( - "Average time: {}ms", + "Average time: {} nanoseconds", if times.len() > 0 { - times.iter().sum::() / times.len() + times.iter().sum::() / (times.len() as u64) } else { 0 } ); - println!("Min time: {}ms", times.iter().min().unwrap_or(&0)); - println!("Max time: {}ms", times.iter().max().unwrap_or(&0)); + println!("Min time: {} nanoseconds", times.iter().min().unwrap_or(&0)); + println!("Max time: {} nanoseconds", times.iter().max().unwrap_or(&0)); println!( - "Median time: {}ms", + "Median time: {} nanoseconds", times.iter().nth(times.len() / 2).unwrap_or(&0) ); println!( - "90th percentile: {}ms", - times.iter().nth(times.len() * 90 / 100).unwrap_or(&0) + "Total time: {} nanoseconds", + end.duration_since(start).as_nanos() ); println!( - "95th percentile: {}ms", - times.iter().nth(times.len() * 95 / 100).unwrap_or(&0) + "Total render time: {} nanoseconds", + times.iter().sum::() ); - println!( - "99th percentile: {}ms", - times.iter().nth(times.len() * 99 / 100).unwrap_or(&0) - ); - - println!("Total time: {}ms", end.duration_since(start).as_millis()); } fn init) -> View + Send + Sync + 'static>(