17个版本
| 0.2.15 | 2023年9月11日 |
|---|---|
| 0.2.14 | 2023年3月8日 |
| 0.2.13 | 2022年12月27日 |
| 0.2.11 | 2022年11月4日 |
| 0.2.3 | 2020年11月18日 |
#22 in #accurate
11,446 monthly downloads
在30个crate中使用(通过datasize)
21KB
414 行
data_size::<T>(&T)
datasize包用于估算值的堆内存使用量,例如一个Vec在栈上由mem::size_of确定的堆外大小所使用的字节数。
datasize旨在进行粗略基准测试,通常用于查找内存消耗大户(它不会找到内存泄露,因为不可达的内存不会被报告)。虽然它可能不会在所有情况下都给出完全准确的读数,但它可以快速识别低垂的果实。
示例
DataSize trait已被实现为许多原始和std类型,并且可以为structs和其他类型派生
use datasize::DataSize;
#[derive(DataSize)]
struct Example {
count: usize,
my_data: Vec<MyStruct>,
warning: Option<Box<u32>>,
#[data_size(skip)]
skipped: Box<char>,
}
现在任何Example的实例都可以通过data_size(&ex)报告其堆分配的估计值。
其他工作
适合此任务的其他crate包括heapsize和malloc_size_of。遗憾的是,heapsize包已经停止维护,而malloc_size_of包对可用的分配器施加了一些相当严格的限制。
lib.rs:
用于与datasize包一起使用的DataSize过程宏派生。
依赖关系
~1.5MB
~35K SLoC