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 • Rust 包仓库 1990/week @ 2024-04-01 • Rust 包仓库 1903/week @ 2024-04-08 • Rust 包仓库 1783/week @ 2024-04-15 • Rust 包仓库 2131/week @ 2024-04-22 • Rust 包仓库 2033/week @ 2024-04-29 • Rust 包仓库 2134/week @ 2024-05-06 • Rust 包仓库 2034/week @ 2024-05-13 • Rust 包仓库 2180/week @ 2024-05-20 • Rust 包仓库 1925/week @ 2024-05-27 • Rust 包仓库 2038/week @ 2024-06-03 • Rust 包仓库 1814/week @ 2024-06-10 • Rust 包仓库 1716/week @ 2024-06-17 • Rust 包仓库 2464/week @ 2024-06-24 • Rust 包仓库 2088/week @ 2024-07-01 • Rust 包仓库 3381/week @ 2024-07-08 • Rust 包仓库 3389/week @ 2024-07-15 • Rust 包仓库

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