#[macro_export]
macro_rules! timer_start_info {
($name:ident) => {
#[allow(non_snake_case)]
let $name = std::time::Instant::now();
let is_terminal = std::io::IsTerminal::is_terminal(&std::io::stdout()) && std::env::var("NO_COLOR").is_err();
let escape_in = match is_terminal {
true => "\x1b[2m",
false => "",
};
let escape_out = match is_terminal {
true => "\x1b[37;0m",
false => "",
};
tracing::info!("{}>>> {}{}", escape_in, stringify!($name), escape_out);
};
($name:ident, $($arg:tt)+) => {
#[allow(non_snake_case)]
let $name = std::time::Instant::now();
let is_terminal = std::io::IsTerminal::is_terminal(&std::io::stdout()) && std::env::var("NO_COLOR").is_err();
let escape_in = match is_terminal {
true => "\x1b[2m",
false => "",
};
let escape_out = match is_terminal {
true => "\x1b[37;0m",
false => "",
};
tracing::info!("{}>>> {}{}", escape_in, format!($($arg)+), escape_out);
};
}
#[macro_export]
macro_rules! timer_stop_and_log_info {
($name:ident) => {
#[allow(non_snake_case)]
let $name = std::time::Instant::now() - $name;
let is_terminal = std::io::IsTerminal::is_terminal(&std::io::stdout()) && std::env::var("NO_COLOR").is_err();
let escape_in = match is_terminal {
true => "\x1b[2m",
false => "",
};
let escape_out = match is_terminal {
true => "\x1b[37;0m",
false => "",
};
tracing::info!("{}<<< {} ({}ms){}", escape_in, stringify!($name), $name.as_millis(), escape_out);
};
($name:ident, $($arg:tt)+) => {
#[allow(non_snake_case)]
let $name = std::time::Instant::now() - $name;
let is_terminal = std::io::IsTerminal::is_terminal(&std::io::stdout()) && std::env::var("NO_COLOR").is_err();
let escape_in = match is_terminal {
true => "\x1b[2m",
false => "",
};
let escape_out = match is_terminal {
true => "\x1b[37;0m",
false => "",
};
tracing::info!("{}<<< {} ({}ms){}", escape_in, format!($($arg)+), $name.as_millis(), escape_out);
};
}
#[macro_export]
macro_rules! timer_start_debug {
($name:ident) => {
#[allow(non_snake_case)]
let $name = std::time::Instant::now();
let is_terminal = std::io::IsTerminal::is_terminal(&std::io::stdout()) && std::env::var("NO_COLOR").is_err();
let escape_in = match is_terminal {
true => "\x1b[2m",
false => "",
};
let escape_out = match is_terminal {
true => "\x1b[37;0m",
false => "",
};
tracing::debug!("{}>>> {}{}", escape_in, stringify!($name), escape_out);
};
($name:ident, $($arg:tt)+) => {
#[allow(non_snake_case)]
let $name = std::time::Instant::now();
let is_terminal = std::io::IsTerminal::is_terminal(&std::io::stdout()) && std::env::var("NO_COLOR").is_err();
let escape_in = match is_terminal {
true => "\x1b[2m",
false => "",
};
let escape_out = match is_terminal {
true => "\x1b[37;0m",
false => "",
};
tracing::debug!("{}>>> {}{}", escape_in, format!($($arg)+), escape_out);
};
}
#[macro_export]
macro_rules! timer_stop_and_log_debug {
($name:ident) => {
#[allow(non_snake_case)]
let $name = std::time::Instant::now() - $name;
let is_terminal = std::io::IsTerminal::is_terminal(&std::io::stdout()) && std::env::var("NO_COLOR").is_err();
let escape_in = match is_terminal {
true => "\x1b[2m",
false => "",
};
let escape_out = match is_terminal {
true => "\x1b[37;0m",
false => "",
};
tracing::debug!("{}<<< {} ({}ms){}", escape_in, stringify!($name), $name.as_millis(), escape_out);
};
($name:ident, $($arg:tt)+) => {
#[allow(non_snake_case)]
let $name = std::time::Instant::now() - $name;
let is_terminal = std::io::IsTerminal::is_terminal(&std::io::stdout()) && std::env::var("NO_COLOR").is_err();
let escape_in = match is_terminal {
true => "\x1b[2m",
false => "",
};
let escape_out = match is_terminal {
true => "\x1b[37;0m",
false => "",
};
tracing::debug!("{}<<< {} ({}ms){}", escape_in, format!($($arg)+), $name.as_millis(), escape_out);
};
}
#[macro_export]
macro_rules! timer_start_trace {
($name:ident) => {
#[allow(non_snake_case)]
let $name = std::time::Instant::now();
let is_terminal = std::io::IsTerminal::is_terminal(&std::io::stdout()) && std::env::var("NO_COLOR").is_err();
let escape_in = match is_terminal {
true => "\x1b[2m",
false => "",
};
let escape_out = match is_terminal {
true => "\x1b[37;0m",
false => "",
};
tracing::trace!("{}>>> {}{}", escape_in, stringify!($name), escape_out);
};
($name:ident, $($arg:tt)+) => {
#[allow(non_snake_case)]
let $name = std::time::Instant::now();
let is_terminal = std::io::IsTerminal::is_terminal(&std::io::stdout()) && std::env::var("NO_COLOR").is_err();
let escape_in = match is_terminal {
true => "\x1b[2m",
false => "",
};
let escape_out = match is_terminal {
true => "\x1b[37;0m",
false => "",
};
tracing::trace!("{}>>> {}{}", escape_in, format!($($arg)+), escape_out);
};
}
#[macro_export]
macro_rules! timer_stop_and_log_trace {
($name:ident) => {
#[allow(non_snake_case)]
let $name = std::time::Instant::now() - $name;
let is_terminal = std::io::IsTerminal::is_terminal(&std::io::stdout()) && std::env::var("NO_COLOR").is_err();
let escape_in = match is_terminal {
true => "\x1b[2m",
false => "",
};
let escape_out = match is_terminal {
true => "\x1b[37;0m",
false => "",
};
tracing::trace!("{}<<< {} ({}ms){}", escape_in, stringify!($name), $name.as_millis(), escape_out);
};
($name:ident, $($arg:tt)+) => {
#[allow(non_snake_case)]
let $name = std::time::Instant::now() - $name;
let is_terminal = std::io::IsTerminal::is_terminal(&std::io::stdout()) && std::env::var("NO_COLOR").is_err();
let escape_in = match is_terminal {
true => "\x1b[2m",
false => "",
};
let escape_out = match is_terminal {
true => "\x1b[37;0m",
false => "",
};
tracing::trace!("{}<<< {} ({}ms){}", escape_in, format!($($arg)+), $name.as_millis(), escape_out);
};
}
#[macro_export]
macro_rules! timer_stop_and_log_debug_net {
($name:ident, $waited:expr, $($arg:tt)+) => {
#[allow(non_snake_case)]
let $name = std::time::Instant::now() - $name;
let waited: std::time::Duration = $waited;
let net = $name.saturating_sub(waited);
let is_terminal = std::io::IsTerminal::is_terminal(&std::io::stdout()) && std::env::var("NO_COLOR").is_err();
let escape_in = match is_terminal {
true => "\x1b[2m",
false => "",
};
let escape_out = match is_terminal {
true => "\x1b[37;0m",
false => "",
};
tracing::debug!(
"{}<<< {} ({}ms) [waited {}ms]{}",
escape_in,
format!($($arg)+),
net.as_millis(),
waited.as_millis(),
escape_out
);
};
}