Avatar ·

为什么在 Rust 中遍历 240 个以上元素的数组会慢 10 倍?

各位同仁,你们好。我正在学习 Rust,遇到了一个在我看来无法解释的行为。我写了一个简单的基准测试:在 `for` 循环中对数组元素求和。对于大小不超过 239 的数组,一切飞快(小于 1 微秒)。一旦大小达到 240,执行时间会突然增加到 10–15 微秒。进一步增大尺寸会导致时间平稳增长,但第一个 10 倍的跳跃让我困惑。 以下是我测试的代码: ```rust use std::time::Instant; fn sum_array(arr: &[i32]) -> i32 { let mut sum = 0; for &x in arr { sum += x; } sum } fn main() { let size = 240; let arr: Vec = (0..size).collect(); let start = Instant::now(); let _ = sum_array(&arr); println!("{:?}", start.elapsed()); } ``` 我使用 `cargo build --release` 编译。尝试将元素类型改为 `i64`——效果依然存在。尝试了不同大小:239 快,240 慢。问题可能出在哪里?这是 LLVM 的特性吗?