updates, clippy, formatting
[Mitarbeiter/Tim-Zeitz/stud-rust-base.git] / src / time.rs
index 8a3843c37641c72832c70eceec81f3b845d29b55..33c720c83b3ec2a8eef407d87e94f08f9b7b8d39 100644 (file)
@@ -1,30 +1,29 @@
 //! This module contains a few utilities to measure how long executing algorithms takes.
-//! It utilizes the `time` crate.
 
-use time_crate as time;
+use std::time::*;
 
 /// 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, F: FnOnce() -> Out>(name: &str, f: F) -> Out {
-    let start = time::now();
-    println!("starting {}", name);
+    let start = Instant::now();
+    eprintln!("starting {}", name);
     let res = f();
-    println!("done {} - took: {}", name, (time::now() - start));
+    eprintln!("done {} - took: {}s", name, start.elapsed().as_secs_f64());
     res
 }
 
 /// 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: FnOnce() -> Out>(f: F) -> (Out, time::Duration) {
-    let start = time::now();
+pub fn measure<Out, F: FnOnce() -> Out>(f: F) -> (Out, Duration) {
+    let start = Instant::now();
     let res = f();
-    (res, time::now() - start)
+    (res, start.elapsed())
 }
 
 /// A struct to repeatedly measure the time passed since the timer was started
 #[derive(Debug)]
 pub struct Timer {
-    start: time::Tm
+    start: Instant,
 }
 
 impl Default for Timer {
@@ -36,21 +35,26 @@ impl Default for Timer {
 impl Timer {
     /// Create and start a new `Timer`
     pub fn new() -> Timer {
-        Timer { start: time::now() }
+        Timer { start: Instant::now() }
     }
 
     /// Reset the `Timer`
     pub fn restart(&mut self) {
-        self.start = time::now();
+        self.start = Instant::now();
     }
 
     /// 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());
+        eprintln!("{}ms", self.start.elapsed().as_secs_f64() * 1000.0);
     }
 
     /// 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()
+    pub fn get_passed_ms(&self) -> f64 {
+        self.start.elapsed().as_secs_f64() * 1000.0
+    }
+
+    /// Return the number of ms passed since the timer was started as a `std::time::Duration`
+    pub fn get_passed(&self) -> Duration {
+        self.start.elapsed()
     }
 }