¿Por qué un bucle sobre un array de 240+ elementos es 10 veces más lento en Rust?
¡Hola, colegas! Estoy aprendiendo Rust y me encontré con un extraño problema de rendimiento al iterar sobre arrays. Escribí un benchmark simple que suma los elementos de un array en un bucle `for`. Para arrays de menos de 240 elementos, el código se ejecuta muy rápido, pero cuando el tamaño llega a 240 o más, el rendimiento cae drásticamente, aproximadamente 10 veces. Aquí está mi 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);
}
```
Probé cambiar `size` de 239 a 240, y la diferencia es enorme. Al principio pensé que estaba relacionado con la caché del procesador, pero entonces la caída debería ser gradual, no abrupta. Uso Rust 1.75, compilo con `--release`. ¿Quizás es un bug de LLVM?