我正在尝试衡量
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 倍更重的操作。优化从哪里开始?如何禁用它?