X-Git-Url: https://i11git.iti.kit.edu/anon-gitweb/?p=Mitarbeiter%2FTim-Zeitz%2Fstud-rust-base.git;a=blobdiff_plain;f=src%2Ftime.rs;h=8a3843c37641c72832c70eceec81f3b845d29b55;hp=2f6e9ac3b59d40235d792b5dc35a43ed45279058;hb=a22a3292ad5755d027ce943706bf4941fbb2b45d;hpb=dd14e61875eedc443d6004db819562a9b7f98a14 diff --git a/src/time.rs b/src/time.rs index 2f6e9ac..8a3843c 100644 --- a/src/time.rs +++ b/src/time.rs @@ -1,6 +1,10 @@ +//! This module contains a few utilities to measure how long executing algorithms takes. +//! It utilizes the `time` crate. + use time_crate as time; -#[allow(dead_code)] +/// This function will measure how long it takes to execute the given lambda, +/// print the time and return the result of the lambda. pub fn report_time Out>(name: &str, f: F) -> Out { let start = time::now(); println!("starting {}", name); @@ -9,36 +13,43 @@ pub fn report_time Out>(name: &str, f: F) -> Out { res } -#[allow(dead_code)] +/// This function will measure how long it takes to execute the given lambda +/// and return a tuple of the result of the lambda and a duration object. pub fn measure Out>(f: F) -> (Out, time::Duration) { let start = time::now(); let res = f(); (res, time::now() - start) } -#[allow(dead_code)] +/// A struct to repeatedly measure the time passed since the timer was started #[derive(Debug)] pub struct Timer { start: time::Tm } +impl Default for Timer { + fn default() -> Self { + Self::new() + } +} + impl Timer { - #[allow(dead_code)] + /// Create and start a new `Timer` pub fn new() -> Timer { Timer { start: time::now() } } - #[allow(dead_code)] + /// Reset the `Timer` pub fn restart(&mut self) { self.start = time::now(); } - #[allow(dead_code)] + /// Print the passed time in ms since the timer was started pub fn report_passed_ms(&self) { println!("{}ms", (time::now() - self.start).num_milliseconds()); } - #[allow(dead_code)] + /// Return the number of ms passed since the timer was started as a `i64` pub fn get_passed_ms(&self) -> i64 { (time::now() - self.start).num_milliseconds() }