Avatar ·

Por que em Rust um loop sobre um array de 240+ elementos é 10 vezes mais lento?

Olá, colegas. Estou estudando Rust e me deparei com um comportamento inexplicável, na minha opinião. Escrevi um benchmark simples: somo os elementos de um array em um loop `for`. Para arrays de até 239 elementos, tudo voa (menos de 1 μs). Assim que o tamanho chega a 240, o tempo de execução aumenta abruptamente para 10–15 μs. O crescimento adicional do tamanho dá um aumento suave no tempo, mas esse primeiro salto de 10 vezes me deixou perplexo. Aqui está o código que estou testando: ```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()); } ``` Estou compilando com `cargo build --release`. Tentei mudar o tipo dos elementos para `i64` — o efeito persiste. Tentei tamanhos diferentes: 239 — rápido, 240 — lento. Qual pode ser o problema? É uma peculiaridade do LLVM?