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

Download history 1990/week @ 2024-04-01 1903/week @ 2024-04-08 1783/week @ 2024-04-15 2131/week @ 2024-04-22 2033/week @ 2024-04-29 2134/week @ 2024-05-06 2034/week @ 2024-05-13 2180/week @ 2024-05-20 1925/week @ 2024-05-27 2038/week @ 2024-06-03 1814/week @ 2024-06-10 1716/week @ 2024-06-17 2464/week @ 2024-06-24 2088/week @ 2024-07-01 3381/week @ 2024-07-08 3389/week @ 2024-07-15

11,446 monthly downloads
30个crate中使用(通过datasize

MIT/Apache

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包括heapsizemalloc_size_of。遗憾的是,heapsize包已经停止维护,而malloc_size_of包对可用的分配器施加了一些相当严格的限制。


lib.rs:

用于与datasize包一起使用的DataSize过程宏派生。

依赖关系

~1.5MB
~35K SLoC