11 个稳定版本
3.0.1 | 2022年3月8日 |
---|---|
3.0.0 | 2021年11月24日 |
2.0.4 | 2021年1月28日 |
1.0.3 | 2021年1月16日 |
#19 in 性能分析
279,389 每月下载量
在 267 个软件包中(直接使用12个) 使用
13KB
256 行
一个库,可以快速获取分配实例的实时/总数/最大计数。
#[derive(Default)]
struct Widget {
_c: countme::Count<Self>,
...
}
let w1 = Widget::default();
let w2 = Widget::default();
let w3 = Widget::default();
drop(w1);
let counts = countme::get::<Widget>();
assert_eq!(counts.live, 2);
assert_eq!(counts.max_live, 3);
assert_eq!(counts.total, 3);
eprintln!("{}", countme::get_all());
lib.rs
:
一个库,可以快速获取分配实例的实时/总数/最大计数。
示例
#[derive(Default)]
struct Widget {
_c: countme::Count<Self>,
}
countme::enable(true);
let w1 = Widget::default();
let w2 = Widget::default();
let w3 = Widget::default();
drop(w1);
let counts = countme::get::<Widget>();
assert_eq!(counts.live, 2);
assert_eq!(counts.max_live, 3);
assert_eq!(counts.total, 3);
eprintln!("{}", countme::get_all());
配置
默认情况下,实现编译为无操作。因此,可以将 Count
字段包含在库类型中。
enable
cargo 功能解除了计数代码的锁。该功能可以在 crate 图中的任何位置启用。
在运行时,使用 enable
函数来控制计数器。如果启用了 print_at_exit
功能,则默认启用计数。否则,默认禁用计数。在 main
中尽早调用 enable(true)
以启用
fn main() {
countme::enable(std::env::var("COUNTME").is_ok());
}
代码针对运行时不启用计数的情况进行了优化(计数是宽松的加载和一个分支到函数调用)。
print_at_exit
Cargo 功能使用 atexit
调用来在程序退出前打印最终计数(它还启用了运行时的计数)。仅当您无法修改主函数以打印计数时使用它 -- atexit
不保证与 rust 的运行时一起工作。
依赖项
~0–5.5MB