#profile #log #automatic #profiling #macro #level #start

proflogger

实现了一个宏,用于启用自动函数分析

3 个版本

0.1.2 2024 年 6 月 14 日
0.1.1 2024 年 6 月 7 日
0.1.0 2024 年 6 月 7 日

#218日期和时间

MIT 许可证

6KB
82

通过宏 #[profile] 实现自动函数分析。

使用

使用 #[profile] 注释一个函数。执行时间将以函数开始时 Instant::elapsed 报告的秒分数自动记录。

如果 debug_assertions 为真,则宏才会展开。默认情况下,发布版本中这不是真的,但可以通过添加以下内容来启用:

[profile.release]
debug-assertions=true

到 Cargo.toml。

只有在当前活动级别的日志级别启用时,才会创建分析对象。

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()
}

依赖项

~0.3–0.8MB
~19K SLoC