При выполнении цикла суммирования для массива в Rust я заметил огромное падение производительности, когда CAPACITY
> = 240. CAPACITY
= 239 примерно в 80 раз быстрее.
Есть ли специальная оптимизация компиляции, которую Rust делает для "коротких" массивов?
Скомпилировано с rustc -C opt-level=3
.
use std::time::Instant;
const CAPACITY: usize = 240;
const IN_LOOPS: usize = 500000;
fn main() {
let mut arr = [0; CAPACITY];
for i in 0..CAPACITY {
arr[i] = i;
}
let mut sum = 0;
let now = Instant::now();
for _ in 0..IN_LOOPS {
let mut s = 0;
for i in 0..arr.len() {
s += arr[i];
}
sum += s;
}
println!("sum:{} time:{:?}", sum, now.elapsed());
}