macro_rules! time {
($timed: expr $(,)?) => { ... };
($level: ident, $timed: expr $(,)?) => { ... };
($name: expr, $timed: expr $(,)?) => { ... };
($level: ident, $name: expr, $timed: expr $(,)?) => { ... };
($cat: expr, $name :expr, $timed: expr $(,)?) => { ... };
($level: ident, $cat: expr, $name :expr, $timed: expr $(,)?) => { ... };
}Expand description
print the time that executing some expression took but only when relevant according to log level.
The goal of this macro is to avoid doing useless
Instant::now.
Arguments:
- log level, optional (default is
Debug) - a category, optional (only if name is set)
- a name, optional (stringified expression is used by default)
- the expression whose duration we want to log depending on the level
Examples:
let result = time!(do_stuff(4));
let result = time!(Debug, do_stuff(3))?;
let result = time!("World creation", do_stuff(7));
let sum = time!(Debug, "summing", 2 + 2);
let sum = time!(Debug, "summing", 2 + 2);
let mult = time!("operations", "mult 4", 3 * 4);
let mult = time!(Info, "operations", "mult 4", 3 * 4);