1个不稳定版本
0.1.0 | 2021年11月30日 |
---|
#823 in 过程宏
16KB
332 行
elapsed-printer
一个非常简单的宏,用于打印执行函数所花费的时间。
特性
elapsed-printer
包只包含一个宏,print_elapsed
,使用Rust标准库 std::time::Duration
结构体中的 Debug
特性来检查函数(方法)执行过程中的耗时。
属性
print_elapsed
可以使用三种类型的属性。使用属性是可选的,如果没有指定,将使用默认属性。属性的顺序和引号的使用无关紧要。
(1) 打印时间的流
stdout
- 将输出打印到标准输出流。stderr
- 将输出打印到标准错误流。both
- 将输出打印到标准输出和错误流。
Default
:stdout
(2) 时间单位
auto
- 以Debug
特性中定义的格式打印输出。s
- 以秒为单位打印输出。ms
- 以毫秒为单位打印输出。us
- 以微秒为单位打印输出。ns
- 以纳秒为单位打印输出。
Default
:auto
(3) 功能列表
- [features_list]
- 如果列表中的任何功能被激活,则打印输出。
- 如果为空,则始终打印输出。
Default
: 未指定(=始终打印)
示例
用例
use elapsed_printer::print_elapsed;
#[print_elapsed]
fn func_to_print_elapsed_default() {}
#[print_elapsed(stdout, auto)]
// Same as default
// Print always regardless of feature activation.
fn func_to_print_elapsed_same_as_default() {}
#[print_elapsed(ms, "stdout")]
// Attribute order does not matter.
// Use of quotes does not matter.
fn func_to_print_elapsed_same_with_ms() {}
#[print_elapsed("ms", stderr, [feature_1])]
// Print when using `feature_1`
fn func_to_print_elapsed_when_using_feature_1() {}
#[print_elapsed([feature_1, feature_2], ns, stderr)]
// Print when using `feature_1` or `feature_2`
fn func_to_print_elapsed_when_using_feature_1_or_feature_2() {}
struct MyStruct;
impl MyStruct {
#[print_elapsed]
// Can be applied to method
pub fn method(&self) {}
}
示例代码和输出
代码
use elapsed_printer::print_elapsed;
use std::time::Duration;
use std::thread;
#[print_elapsed]
fn function_name_1() {
thread::sleep(Duration::from_millis(10));
}
#[print_elapsed(stdout, ns)]
fn function_name_2() {
//
}
#[print_elapsed(stdout, us)]
fn function_name_3() {
function_name_1()
}
fn main() {
function_name_1();
function_name_2();
function_name_3();
function_name_1();
}
输出
function_name_1, 12.527014ms
function_name_2, 32ns
function_name_1, 10.070776ms
function_name_3, 10097us
依赖项
~1.5MB
~35K SLoC