1use std::sync::Once;
2use std::time::Instant;
3
4pub const CLOCKS_PER_NANO: u64 = 1;
5pub const CLOCKS_PER_MICRO: u64 = 1_000 * CLOCKS_PER_NANO;
6pub const CLOCKS_PER_MILLI: u64 = 1_000 * CLOCKS_PER_MICRO;
7pub const CLOCKS_PER_SEC: u64 = 1_000 * CLOCKS_PER_MILLI;
8
9static mut TIME: Option<Instant> = None;
10static INIT: Once = Once::new();
11
12pub fn clock() -> u64 {
13 unsafe {
14 INIT.call_once(|| {
15 TIME = Some(Instant::now());
16 });
17 TIME.unwrap().elapsed().as_nanos() as u64
18 }
19}