Crates.io | proflogger |
lib.rs | proflogger |
version | 0.1.2 |
source | src |
created_at | 2024-06-07 21:04:18.075059 |
updated_at | 2024-06-14 20:30:42.618978 |
description | Implements a macro to enable automatic function profiling. |
homepage | |
repository | https://github.com/mackenziedg/proflogger |
max_upload_size | |
id | 1265166 |
size | 6,384 |
Implements automatic function profiling via the #[profile]
macro.
Annotate a function with #[profile]
.
The execution time will be automatically logged as the fractional number of seconds reported by Instant::elapsed
from the start of the function.
The macro is only expanded if debug_assertions
is true.
By default, this is not true in release builds, but can be enabled by adding
[profile.release]
debug-assertions=true
to Cargo.toml.
The profiling object is only created if its log level is enabled for the current active level.
use proflogger::profile;
#[profile]
fn func1() {
std::thread::sleep(std::time::Duration::from_secs(1));
// will log
// func1: 1.000000000
// at log::Level::Trace
}
// By default, the log level is set to `log::level::Trace`,
// but this can be customized like
#[profile(Error)]
fn expensive_function(arg1: usize, arg2: usize) -> usize {
(arg1..arg2).map(|a| a * a).sum()
}