Bonjour à tous et toutes, Je constate qu'il n'y a pas foule qui utilise Rust. SVP ne vous bousculez pas pour me répondre. J'ai un très bon tuto sur Rust mais la documentation est plutôt compliquée. En tout cas, j'ai de la difficulté à trouver ce que je veux. On fait aussi souvent référence à GITHub que je ne connais pas. Ma question présente est de calculer le temps d'exécution comme clock() en C ou perf_counter() en Python. Pourriez-vous me donner la recette ou un meilleur truc pour trouver cette info dans la doc? Merci pour toute réponse.
Le Tout est souvent plus grand que la somme de ses parties.
use std::time::Instant;
....
// Dans ta fonction
let now = Instant::now();
....
...
// à la fin de l'exécution
let elapsed = now.elapsed();
println!(duree: {:.2?}", elapsed);
Ça fonctionne très bien dans mes programmes PS J'ai mal lu ta question : la doc rust est très pénible à consulter au début, j'ai pas mal fouillé avent de trouver. Le langage évolue beaucoup et certaines info étaient valables lorsqu'elles ont été publiées puis sont devenues obsolètes après modif des libs (ou autres) de Rust.
- Edité par joel76 12 juillet 2024 à 10:03:19
Le crayon la gomme et le papier sont les meilleurs outils du programmeur !
Je te remercie pour l'information. Ça fonctionne parfaitement sur mon ordi également.
-
use std::time::Instant; fn main() { let now = Instant::now(); let mut n: u64 = 0; for _ in 0..1000000000 { n += 1; } let elapsed = now.elapsed(); println!("duree: {:.3?}", elapsed); println!("{}", n); }
-
Sans optimisation, je passe en environ 580 ms et avec optimisation, c'est plutôt environ 200000 ns ...
- Edité par PierrotLeFou 12 juillet 2024 à 19:59:49
Le Tout est souvent plus grand que la somme de ses parties.
> Faudra que je fasse d'autres tests, mais le temps d'exécution dans certains cas est plus lent que pour C.
> La sécurité, ça se paie ...
Sur des micros benchmark, les sécurités qu'apporte rust est qui rend difficile certaines optimisations difficile ne se verront justement pas parce qu'on ne tombe pas dessus dans un microbench.
Et dans ton code comme au-dessus, ce qui est mesurer n'est que l'appel de now.elapsed: la boucle est dégagée par le compilateur. En C++ les frameworks de test comme nanobench ou google.benchmark passent par des fonctions pour ne pas optimiser le résultat des variables. Il faut faire de même en rust avec std::hint::black_box ou équivalent.
Le Tout est souvent plus grand que la somme de ses parties.
Le crayon la gomme et le papier sont les meilleurs outils du programmeur !
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le crayon la gomme et le papier sont les meilleurs outils du programmeur !
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.