2009-03-10 7 views

Répondre

1

Oui; le code instrumenté est différent du code non-instrumenté. Et cela signifie que vous devez être prudent avec les résultats - mais la plupart des profileurs font un travail raisonnable de se concentrer sur les éléments importants. Je n'ai jamais eu beaucoup de chance avec l'option d'échantillonnage - l'instrumentation a souvent été utile, cependant. Personnellement, j'aime l'offre jetBrains.

+0

Cool, Marc! Deux autres commentaires, 1. Juste confirmer avec vous que le mode d'instrumentation changera réellement le code original ou exécutable? 2. J'ai trouvé que jetBrains n'est pas gratuit et que des avantages par rapport au profileur intégré dans VSTS? – George2

+0

Un autre commentaire, dans le modèle d'échantillonnage, est-il possible d'inclure l'heure à laquelle le thread est en attente? Si je me souviens bien, le modèle d'échantillonnage ne calcule pas le temps d'attente thread? Donc, si mon goulot d'étranglement de la performance de l'application est dans un thread toujours attendre, je ne peux jamais savoir à partir du modèle d'échantillonnage? – George2

0

Mode d'échantillonnage est quand vous savez quoi les zones chaudes dans votre code, il ne modifie pas votre code, il sera simplement goûter à la callstack actuelle de tous les threads en cours d'exécution. Si vos threads dorment en permanence ou attendent une ressource (mutex, event, etc), alors cela comptera comme une zone chaude. Vous voulez utiliser ce mode pour mesurer la charge. (Traçage) mesurera combien de temps (en cycles) sont dépensés dans chaque méthode.
Il doit instrumenter votre code (en utilisant les symboles de débogage) mais il exclura à la fin le surdébit qu'il a mis sur le système. Vous voulez utiliser ce mode pour mesurer un seul processus.

0

Oui, lors de l'instrumentation, le profileur va modifier votre code avec des instructions supplémentaires pour rassembler et suivre les données de performance nécessaires. Vous ne voudrez jamais distribuer une version instrumentée de vos assemblys, et vous ne voudrez pas utiliser d'assemblys instrumentés à des fins de débogage (car les sections critiques/conditions de course/etc pourraient certainement se comporter différemment étant donné l'instrumentation supplémentaire). Ceci étant dit, l'instrumentation peut être très utile pour les objectifs que le profilage est censé résoudre. En rassemblant les données réelles et en isolant les opérations coûteuses, les efforts d'optimisation peuvent être correctement ciblés et les résultats peuvent être mesurés avec précision, en évitant le temps perdu, la complexité accrue, la maintenance réduite et tous les autres problèmes associés à une optimisation prématurée.