2010-12-13 28 views
7

Je ne sais pas si le titre a du sens, mais ce que j'essaie de faire est de chronométrer 2 méthodes différentes et de voir combien de fois elles s'exécutent par seconde, ou disons par 10 secondes.Comment profiler les méthodes C# par seconde?

Par exemple:

DividePolygons1(Polygon[] polys) 
DividePolygons2(Polygon[] polys) 

DividePolygons1 ran: 
1642 times per 1 second 

DividePolygons2 ran: 
1890 times per 1 second 

Répondre

10

La classe System.Diagnostics.Stopwatch vous aidera, mais soyez prudent d'utiliser les résultats d'une certaine manière afin que l'optimiseur ne supprime pas la logique que vous essayez de mesurer. Au-delà, exécutez le code que vous êtes en train de profiler plusieurs millions de fois en boucle (ajustez le nombre d'itérations pour qu'il dure entre 1 et 30 secondes), puis divisez le nombre d'itérations par le temps nécessaire pour obtenir le débit en exécution par seconde.

+5

Et d'utiliser une version de version et n'ont pas de débogueur attaché lors du démarrage du programme. Et mieux exécuter tout le code une fois avant de commencer le benchmark afin que les effets de démarrage comme JIT ne sont pas mesurés. – CodesInChaos

+1

Ne pas oublier de faire attention à la localité de référence. Cela peut prendre plus de temps pour diviser les mêmes polygones exacts s'ils ne sont pas toujours créés en même temps. –

+0

@CodeInChaos, comment puis-je m'assurer qu'aucun débogueur n'est attaché? L'utilisation de la version release est-elle automatique? –

2

Ce que je ferais:

  • Démarrer une Stopwatch.
  • Dans ces fonctions, j'incrémente une variable simple (longue, flottante ou double, en fonction de la fréquence à laquelle vous pensez qu'elle sera appelée) afin qu'elle soit incrémentée à chaque appel.
  • Appelez la première fonction.
  • Arrêtez le Stopwatch et vérifiez le TotalSeconds par rapport à la variable que j'ai incrémentée.
  • Répéter pour la deuxième fonction. Visual Studio 2010 a un profileur qui pourrait déterminer le nombre exact d'appels de méthodes par unité de temps.
1

+0

Merci, est-ce dans la version pro? (non ultime) –

+1

Le profileur est disponible dans les éditions Premium et Ultimate, mais pas Pro. Voir http://www.microsoft.com/visualstudio/en-us/products sous "Debugging and Diagnostics". –