Module f3::examples::timeit
[−]
[src]
Timing sections of code
#![no_main] #![no_std] #[macro_use] extern crate f3; use f3::time::{FREQUENCY, Instant}; use f3::delay; fn timeit<F>(f: F) -> u32 where F: FnOnce() { let instant = Instant::now(); f(); instant.elapsed() } macro_rules! timeit { ($e:expr) => { let bias = timeit(|| {}); let ticks = timeit(|| $e) - bias; iprintln!("{} took {} ticks ({} s)", stringify!($e), ticks, ticks as f32 / FREQUENCY as f32); } } #[export_name = "main"] pub extern "C" fn main() -> ! { timeit!(delay::ms(1_000)); timeit!(delay::ms(1_000)); timeit!(delay::ms(1_000)); timeit!(iprintln!("Hello, world!")); timeit!(iprintln!("{}", 42)); timeit!(iprintln!("{}", core::f32::consts::PI)); loop {} }