Avatar ·

Pourquoi une boucle sur un tableau de 240+ éléments est-elle 10 fois plus lente en Rust ?

Bonjour, collègues. J'apprends Rust et j'ai rencontré un comportement inexplicable à mon avis. J'ai écrit un simple benchmark : je somme les éléments d'un tableau dans une boucle `for`. Pour les tableaux de taille jusqu'à 239 éléments, tout vole (moins de 1 µs). Dès que la taille atteint 240, le temps d'exécution augmente brusquement à 10–15 µs. Une augmentation supplémentaire de la taille donne une augmentation progressive du temps, mais ce premier saut de 10 fois m'a intrigué. Voici le code que je teste : ```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()); } ``` Je compile avec `cargo build --release`. J'ai essayé de changer le type des éléments en `i64` — l'effet persiste. J'ai essayé différentes tailles : 239 — rapide, 240 — lent. Quelle pourrait en être la cause ? Est-ce une particularité de LLVM ?