1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
#[macro_export] macro_rules! benchmark { ($($lines:stmt;)*) => { let start = Instant::now(); $($lines;)* let duration = start.elapsed(); println!("Benchmark time: {:?}", duration); }; } #[macro_export] macro_rules! benchmarknamed { ( #[$($name:ident)?] $( $(#[$inner:ident $($args:tt)*])* $lines:stmt; )* ) => { let start = Instant::now(); $($lines;)* let duration = start.elapsed(); println!("{} time: {:?} | {}", stringify!($($name)?), duration, stringify!(args)); }; } #[cfg(test)] mod tests { #[test] fn it_works() { assert_eq!(2 + 2, 4); } }