Avatar ·

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 ?