如何正确测量 Rust 程序的性能(基准测试)?
大家好!我是 Rust 新手,正在尝试理解如何正确测量程序的性能。在其他语言(例如 Python 或 JavaScript)中,我只是使用内置的定时器或模块,但在 Rust 中一切似乎更复杂。
我编写了一个简单的函数,用于对向量中的元素求和,并想知道它的执行时间:
```rust
fn sum_vec(vec: &Vec) -> i32 {
let mut sum = 0;
for i in vec {
sum += i;
}
sum
}
fn main() {
let data = vec![1; 1_000_000];
// 如何测量 sum_vec(&data) 的执行时间?
println!("Sum: {}", sum_vec(&data));
}
```
我尝试使用 `std::time::Instant`,但得到了奇怪的结果:有时是 0 微秒,有时在重复运行时值差异很大。我还听说过 `cargo bench`,但不知道如何配置它。
请告诉我:
1. 如何正确测量一小段代码的执行时间?
2. 如何避免编译器的影响?