use std::io::Write; use std::time::Instant; use termcolor::{Color, ColorChoice, ColorSpec, StandardStream, WriteColor}; const ITERATIONS: u32 = 1000; pub fn time(name: &'static str, function: impl Fn() -> T) { let begin = Instant::now(); for _ in 0..ITERATIONS { let _ = function(); } let micros = (begin.elapsed() / ITERATIONS).as_micros(); let mode = ["release", "debug"][cfg!(debug_assertions) as usize]; let mut writer = StandardStream::stderr(ColorChoice::Auto); let _ = writer.set_color(ColorSpec::new().set_fg(Some(Color::Magenta))); let _ = writeln!(&mut writer, "{} in {} mode: {} micros", name, mode, micros); }