84 votes

Quelle est la meilleure façon de mesurer le temps d'exécution d'une fonction ?

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

Tout conseil est le bienvenu.

96voto

45voto

tafa Points 3097

Je vous conseille vivement de jeter un coup d'oeil à System.Diagnostics.Stopwatch

Et quand j'ai cherché à en savoir plus sur le chronomètre, j'ai trouvé ce site ;

Attention au chronomètre

Une autre possibilité a été mentionnée

Process.TotalProcessorTime

10voto

M.N Points 4106

Utiliser un profileur

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

Les avantages qu'ils ont sont :

  • Vous pouvez même obtenir un niveau de déclaration rupture
  • Aucun changement requis dans votre base de code
  • Les instrumentions ont généralement des frais généraux très faibles, ce qui permet d'obtenir des résultats très précis.

Il existe de nombreuses possibilités open-source également.

4voto

FooLman Points 175

Tickcount est bien, mais je suggère de l'exécuter 100 ou 1000 fois, et de calculer une moyenne. Non seulement cela rend les résultats plus mesurables, dans le cas de fonctions très rapides/courtes, mais cela permet également de traiter certains effets ponctuels causés par l'overhead.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X