5 个版本
0.1.4 | 2023 年 8 月 17 日 |
---|---|
0.1.3 | 2023 年 8 月 17 日 |
0.1.2 | 2023 年 8 月 17 日 |
0.1.1 | 2023 年 8 月 17 日 |
0.1.0 | 2023 年 8 月 17 日 |
#171 在 性能分析
15KB
91 行
异步工具
这个 Rust 库提供了一个有用的功能,允许你精确测量任何特定 future 执行所需的时间。
请注意,这仅与 Rust 的 Instant
类型一样准确。因此,虽然它提供了良好的基准测试,但它受限于 std/os/hardware 测量时间的精度。(如果您知道更精确的实现,我非常愿意听取您的意见)
使用非常简单
async fn sleep() {
tokio::time::sleep(std::time::Duration::from_secs(1)).await;
}
// debug log our `sleep()` future with a custom log message
// will only print debug log if `debug_assertions` are enabled
//
// elapsed arg must be used
dbg_instrument!("sleep() took {elapsed:?}", sleep()).await;
// same as above, except with a predefined macro provided log
// message
dbg_instrument!(sleep()).await;
// will always print a debug log message regardless of
// `debug_assertions` status
//
// elapsed arg must be used
instrument!("{elapsed:?}", sleep()).await;
// same as above, except with a predefined macro provided
// log message
instrument!(sleep()).await;
// we can also manually create an instrumenting future if
//we require custom behavior or access to the elapsed data
let res = InstrumentFuture::new(sleep()).await;
println!("took {:?} with result {:?}", res.elapsed, res.result);
依赖项
~0.3–0.8MB
~18K SLoC