如何确保 Box::new() 真的进行堆分配?

问题描述 投票:0回答:0

我正在尝试衡量

Box::new()
的表现:

fn main() {
    let start = Instant::now();
    let mut sum = 0;
    for _ in 0..100000 {
        sum += 42;
    }
    println!("Simple sum: {:?}", start.elapsed());
    let start2 = Instant::now();
    for _ in 0..100000 {
        let b = Box::new(42);
        Box::leak(b);
    }
    println!("Many heap calls: {:?}", start2.elapsed());
}

我得到:

Simple sum: 1.413291ms
Many heap calls: 6.9935ms

很明显,数据看起来不对。

Box::new()
一定是比
+=
的 5 倍更重的操作。优化从哪里开始?如何禁用它?

rust memory-management
© www.soinside.com 2019 - 2024. All rights reserved.