7个版本
0.2.5 | 2023年10月9日 |
---|---|
0.2.4 | 2023年3月24日 |
0.1.0 | 2023年3月22日 |
#338 in 过程宏
26每月下载
9KB
61 行
一个过程宏和一个宏属性,用于快速计时函数。使用 std::time::Instant
,因此依赖于std来工作。
#[time_this]
此宏可以用于使用 std::time::Instant
计时任何函数。每当函数被调用时,其计时信息将被传递到stdout(但在递归调用的情况下,它只会打印一次)。它可能不适用于 async fn
,特别是当返回一个未来但尚未等待时,并且它肯定不适用于 const fn
,即使是在非const上下文中。如果需要,您可以编写一个小包装函数,如果您需要计时一个 const fn
。它将打印
- 如果函数执行时间小于1μs,则显示ns时间。
- 如果函数执行时间小于1ms,则显示μs时间。
- 如果函数执行时间超过1ms但小于1s,则显示ms时间。
- 如果函数执行时间超过一秒,则显示s时间,并保留两位小数。
use time_this::time_this;
#[time_this]
fn add(a: u32, b: u32) -> u32 {
a + b
}
fn main() {
let result = add(3, 5);
// function 'add()' took 37ns
}
time!()
此宏可以用于使用 std::time::Instant
计时任何表达式。在表达式评估后,计时信息将立即传递到stdout,并将结果返回,类似于 dbg!()
。类似于 time_this
,它可能不适用于 async fn
。它将打印计时表达式的文件/行,以及表达式本身,而不是打印函数名称。
use time_this::time;
fn add(a: u32, b: u32) -> u32 {
a + b
}
fn main() {
let result = time!(add(3, 5));
// [tests/tests.rs:33] -> add(3, 5) took 28ns
}
依赖关系
~275–720KB
~17K SLoC