proflogger

Crates.ioproflogger
lib.rsproflogger
version0.1.2
sourcesrc
created_at2024-06-07 21:04:18.075059
updated_at2024-06-14 20:30:42.618978
descriptionImplements a macro to enable automatic function profiling.
homepage
repositoryhttps://github.com/mackenziedg/proflogger
max_upload_size
id1265166
size6,384
Mackenzie Gray (mackenziedg)

documentation

README

Implements automatic function profiling via the #[profile] macro.

Use

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()
}
Commit count: 7

cargo fmt