VS2010 profiler : est-il possible à un profil spécifique de la méthode?
Peut-être quelques méthodes pour allumer et d'éteindre le profilage de code?
Ou vous pouvez sélectionner une fonction spécifique de profil ?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez également utiliser le profileur de l'API de collecte de données pour démarrer et arrêter le profilage autour des méthodes qui vous intéresse. Voir cet article MSDN une soluce.
La meilleure façon d'utiliser l'API dans ce cas serait d'appeler
StartProfile
juste avant que vos méthodes d'exécution et d'appelStopProfile
juste après. Vous devriez commencer le profilage via "Démarrer Avec le Profilage Pause" option de sorte que vous n'avez pas à démarrer le profilage jusqu'à ce que vous frappez le premier appel àStartProfile
.À l'aide de l'API de collecte de données sera de travailler avec d'échantillonnage ou de l'instrumentation.
Oui, avec un peu d'effort, vous pouvez le faire si vous ne l'instrumentation de profilage (pas d'échantillonnage):
/include:ConsoleApp.Program::Main,MyNamespace.MyClass::MyFunc
)La
/include
la syntaxe est un peu bizarre, mais si vous lancez un VS invite de commande et accédez à vos données binaires du répertoire, vous pouvez exécutervsinstr.exe /dumpfuncs foo.exe
pour voir la liste de méthodes que vous pouvez inclure explicitement.Voir le vsinstr.exe syntaxe de ligne de commande pour plus d'info.
Ne pas.
Vous êtes à la recherche pour le "goulot d'étranglement", droit?
Ce n'est probablement pas dans la fonction où vous pensez qu'elle est.
C'est la méthode que je appuyer sur, pour n'importe quelle langue ou de l'OS.
Si le problème est dans cette fonction, il vous le dira. Si elle est ailleurs, il va vous dire.
@downvoter: Quel est le problème? Si vous êtes préoccupé par la vitesse de démarrage de l'application, manuellement prendre des échantillons pendant le démarrage de l'application.
L'alternative dans un profileur est de l'exécuter sur l'ensemble de la période et puis essayer de comprendre quelle partie de la timeline a été le démarrage. Et comme la plupart du temps est consacré à l'utilisateur d'attendre, quand vous ne voulez pas d'échantillons, vous le mettez dans CPU-mode d'échantillonnage. Le problème, c'est que vous ne voyez pas les choses comme les e/S temps passé à charger les dll, l'interrogation DNS, etc., qui peut être dominante pendant le démarrage.
Puis il y a toute la question de la présentation de la bêtise comme "chaud chemin", où le temps vrai-preneur peut facilement cacher.
Dans le cas où vous vous posez la question "Comment puis-je examiner des milliers d'échantillons de la pile?", la réponse est vous n'avez pas besoin de. Si le démarrage est particulièrement lent, c'est parce qu'il s'est passé quelque grande partie de son temps à faire quelque chose qu'il n'a pas besoin de le faire - d'une fraction comme, disons, 30%, à être conservateur.
Cela signifie que vous allez le voir, en moyenne, une fois tous 3.33 échantillons.
Puisque vous avez besoin de le voir deux fois ou plus le savoir est un problème, en moyenne, vous avez besoin de 6.67 échantillons.
Plus le problème est, le moins d'échantillons dont vous avez besoin.
(Si c'est à 90%, vous avez seulement besoin de 2/0.9 = 2.2 échantillons.)
Si vous examinez les 20 échantillons, vous verrez tout problème qui coûtent plus que d'environ 10%, et si vous le réparer, tout les petits problèmes de prendre un plus grand pourcentage - ils sont amplifiés par l'accélération de ratio, de sorte qu'ils sont plus faciles à trouver sur le prochain tour.
Voici les mathématiques.