web-sys: performance.now
View full source code or view the compiled example online
Want to profile some Rust code in the browser? No problem! You can use the
performance.now()
API and friends to get timing information to see how long
things take.
src/lib.rs
#![allow(unused)] fn main() { use std::time::{Duration, SystemTime, UNIX_EPOCH}; use wasm_bindgen::prelude::*; // lifted from the `console_log` example #[wasm_bindgen] extern "C" { #[wasm_bindgen(js_namespace = console)] fn log(a: &str); } macro_rules! console_log { ($($t:tt)*) => (log(&format_args!($($t)*).to_string())) } #[wasm_bindgen(start)] fn run() { let window = web_sys::window().expect("should have a window in this context"); let performance = window .performance() .expect("performance should be available"); console_log!("the current time (in ms) is {}", performance.now()); let start = perf_to_system(performance.timing().request_start()); let end = perf_to_system(performance.timing().response_end()); console_log!("request started at {}", humantime::format_rfc3339(start)); console_log!("request ended at {}", humantime::format_rfc3339(end)); } fn perf_to_system(amt: f64) -> SystemTime { let secs = (amt as u64) / 1_000; let nanos = (((amt as u64) % 1_000) as u32) * 1_000_000; UNIX_EPOCH + Duration::new(secs, nanos) } }