Avatar ·

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

大家好!我正在学习 Rust,在遍历数组时遇到了一个奇怪的性能问题。我写了一个简单的 benchmark,用 `for` 循环对数组元素求和。当数组大小小于 240 个元素时,代码执行得非常快,但一旦大小达到 240 或更大,性能就会急剧下降——大约慢 10 倍。这是我的代码: ```rust 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 = std::time::Instant::now(); let result = sum_array(&arr); let duration = start.elapsed(); println!("Sum: {}, Time: {:?}", result, duration); } ``` 我尝试将 `size` 从 239 改为 240,差异巨大。起初我以为是 CPU 缓存的问题,但如果是这样,性能下降应该是渐进的,而不是突变的。我使用的是 Rust 1.75,编译时加了 `--release`。这可能是 LLVM 的 bug 吗?