4 个版本
0.2.3 | 2021 年 12 月 3 日 |
---|---|
0.2.2 |
|
0.1.1 | 2021 年 11 月 30 日 |
#226 在 性能分析
10KB
122 行
scope_timer
使用方法
scope_timer
crate 提供了一种非常简单的方法来创建计时器并跟踪信息。
示例
fn fib(n: u64) -> u64 {
if n <= 1 {
return 1;
}
fib(n - 1) + fib(n - 2)
}
fn main() {
let _handle = ScopeTimer::new("my_timer", TimeFormat::SecondsF32(3), None, false);
println!("{}", fib(46));
}
Output:
Label: my_timer | Time: 5.973secs
你也可以这样做
let mut handle = ScopeTimer::default();
handle.name = "my_timer";
handle.log_level = Some(LogLevel::Info);
或者这样做
let mut handle = scope_timer::ScopeTimer {
label: "timer",
time_format: TimeFormat::SecondsF32(3),
now: std::time::Instant::now(),
log_level: None,
debug_only: true,
};
handle.label = "what"
日志级别
scope_timer
crate 的依赖性最小。你可以为你的项目使用 log crate。
为此,你需要指定日志级别并使用 log 日志实现 作为示例 env_logger
crate
env_logger::init();
let mut handle = ScopeTimer::default();
handle.name = "my_timer";
handle.log_level = Some(LogLevel::Info);
已知问题
你不能创建更优雅的计时器,因为会发生移动,这会自动发生销毁,你会在移动时和移动后打印两次计时器。
像这样
let _handle = ScopeTimer {
name: "my_timer",
..Default::default()
};
但是欢迎提出 PR。我会尝试解决这个问题,使计时器更易于使用。
依赖性
~87KB