Por que um loop em um array de 240+ elementos é 10 vezes mais lento em Rust?
Olá, colegas! Estou aprendendo Rust e me deparei com um problema estranho de desempenho ao iterar sobre arrays. Escrevi um benchmark simples que soma os elementos de um array em um loop `for`. Para arrays com menos de 240 elementos, o código executa muito rápido, mas quando o tamanho chega a 240 ou mais, o desempenho cai drasticamente — cerca de 10 vezes. Aqui está meu código:
```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);
}
```
Tentei mudar o `size` de 239 para 240, e a diferença é colossal. Primeiro pensei que fosse relacionado ao cache da CPU, mas então a queda deveria ser gradual, não abrupta. Estou usando Rust 1.75, compilando com `--release`. Talvez seja um bug do LLVM?