Comment mesurer correctement les performances du code Rust : benchmarking et profilage
Salut les collègues ! J'écris en Rust depuis environ six mois et j'ai rencontré un problème : je n'arrive pas à mesurer correctement le temps d'exécution de mon code. J'ai essayé d'utiliser std::time::Instant, mais les résultats varient d'une exécution à l'autre, surtout pour les petites fonctions. Par exemple, je veux comparer deux façons de sommer un vecteur :
```rust
use std::time::Instant;
fn sum_for(v: &[i32]) -> i32 {
let mut sum = 0;
for x in v { sum += x; }
sum
}
fn sum_iter(v: &[i32]) -> i32 {
v.iter().sum()
}
fn main() {
let data = vec![1; 1_000_000];
let start = Instant::now();
let _ = sum_for(&data);
println!("for: {:?}", start.elapsed());
let start = Instant::now();
let _ = sum_iter(&data);
println!("iter: {:?}", start.elapsed());
}
```
Sur mon portable