use std::time::Instant;
pub struct Profiler;
impl Profiler {
pub fn profile_execution_time<F>(f: F) -> u128
where
F: FnOnce(),
{
let start_time = Instant::now();
f();
start_time.elapsed().as_millis()
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_profiler_execution_time() {
let duration = Profiler::profile_execution_time(|| {
let mut sum: i64 = 0;
for i in 0..1_000_000_i64 { sum += i;
}
assert_eq!(sum, 499999500000_i64); });
println!("Measured duration: {} ms", duration);
}
}