Почему при зацикливании массива с 240 или более элементами сильно сказывается производительность?

Когда я запускал цикл суммирования для массива в 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());
}
195
задан RonJohn 15 August 2019 в 02:35
поделиться