Pourquoi une boucle sur un tableau de plus de 240 éléments est-elle 10 fois plus lente en Rust ?
Bonjour, collègues ! J'apprends Rust et j'ai rencontré un problème étrange de performance lors de l'itération sur des tableaux. J'ai écrit un simple benchmark qui additionne les éléments d'un tableau dans une boucle `for`. Pour les tableaux de moins de 240 éléments, le code s'exécute très rapidement, mais dès que la taille atteint 240 ou plus, la performance chute brutalement — d'environ 10 fois. Voici mon code :
```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);
}
```
J'ai essayé de changer `size` de 239 à 240, et la différence est énorme. Au début, j'ai pensé que cela était lié au cache du processeur, mais alors la baisse devrait être progressive, pas brutale. J'utilise Rust 1.75, je compile avec `--release`. Peut-être que c'est un bug de LLVM ?