Avatar ·

Por qué en Rust un bucle sobre un array de más de 240 elementos es 10 veces más lento

Saludos, colegas. Estoy aprendiendo Rust y me encontré con un comportamiento inexplicable, en mi opinión. Escribí un benchmark simple: sumo los elementos de un array en un bucle `for`. Para arrays de hasta 239 elementos, todo vuela (menos de 1 μs). En cuanto el tamaño llega a 240, el tiempo de ejecución aumenta abruptamente a 10–15 μs. Un crecimiento adicional del tamaño da un aumento gradual del tiempo, pero este primer salto de 10 veces me tiene desconcertado. Aquí está el código que estoy probando: ```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()); } ``` Compilo con `cargo build --release`. Probé cambiar el tipo de elementos a `i64` — el efecto se mantiene. Probé diferentes tamaños: 239 — rápido, 240 — lento. ¿Cuál podría ser la causa? ¿Es una característica de LLVM?