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