use std::time::Instant;
use crate::{
log,
logger::{self, Level},
};
pub struct ScopeMeasure {
start_time: Instant,
scope_name: String,
}
impl ScopeMeasure {
pub fn new(scope_name: String) -> ScopeMeasure {
ScopeMeasure {
start_time: Instant::now(),
scope_name,
}
}
pub fn stopover(&self, stopover_name: &str) {
log!(
Level::Debug,
&format!(
"ScopeMeasure: function `{}' (stop over `{stopover_name}') took {:.6} s so far",
self.scope_name,
self.start_time.elapsed().as_secs_f64()
)
);
}
}
impl Drop for ScopeMeasure {
fn drop(&mut self) {
log!(
Level::Debug,
&format!(
"ScopeMeasure: function `{}' took {:.6} s",
self.scope_name,
self.start_time.elapsed().as_secs_f64()
)
);
}
}