web-dev-qa-db-fra.com

Quel est le meilleur moyen de mesurer le temps d'exécution d'une fonction?

Évidemment je peux faire et DateTime.Now.After - DateTime.Now.Before mais il doit y avoir quelque chose de plus sophistiqué.

Tous les conseils appréciés.

84
inspite
96
ctacke

Je vous conseillerais certainement de jeter un coup d'œil à System.Diagnostics.Stopwatch

Et quand j'ai regardé autour de moi pour en savoir plus sur Stopwatch, j'ai trouvé ce site;

Attention au chronomètre

Il a mentionné une autre possibilité

Process.TotalProcessorTime

45
tafa

Utiliser un profileur

Votre approche fonctionnera néanmoins, mais si vous recherchez des approches plus sophistiquées. Je suggère d'utiliser un C # Profiler .

Les avantages qu'ils ont est:

  • Vous pouvez même obtenir une séparation de niveau de déclaration
  • Aucune modification requise dans votre base de code
  • Les instruments ont généralement moins de frais généraux, ce qui permet d'obtenir des résultats très précis.

Il en existe de nombreux open-source également.

11
M.N

Tickcount est bon, mais je suggère de le lancer 100 ou 1000 fois et de calculer une moyenne. Non seulement le rend plus mesurable - dans le cas de fonctions très rapides/courtes, mais permet également de gérer certains effets ponctuels causés par les frais généraux.

4
FooLman