2009-05-28 7 views
1

Quelles sont vos opinions sur les techniques à utiliser dans l'analyse des performances et l'optimisation de chaque application réalisée dans les technologies .NET?
De même, quel type de techniques de débogage/traçage savez-vous qui peut être puissant?
Pensez-vous que pour les projets à grande échelle est nécessaire d'avoir des classes de débogage/diagnostic personnalisé?
Recommandez-vous l'utilisation de profileurs d'application ou de toute autre application tierce? Une autre préoccupation assez liée: Comment puis-je obtenir le temps d'exécution d'une méthode?. Débogage et suivi des performances .NET: astuces/fonctionnalités cachées?

Répondre

1

Ceci est un conseil indépendant de la langue. Si vous obtenez quelques experience doing performance tuning applications existantes, en particulier les plus grandes, vous pouvez apprendre ce que j'ai appris. Le plus grand tueur de performance est la sur-conception: trop de couches d'abstraction, de traitement par notification, etc. Le problème est que les petites choses qui sont censées vous faciliter la vie, dans l'abstrait, finissent par vous aspirer dans un grand cycle sans que vous le sachiez.

1

C'est une question très générique :) mais voici quelques directives

  1. Mesure de temps de démarrage de votre application, si le démarrage est une grande préoccupation pour vos clients, pensez à utiliser le service Ngen, en utilisant le service de NGEN (NGEN .exe) ont une performance considérable pour le démarrage à froid
  2. Workingset et GC heap: à quoi ressemble votre tas gc; spécialement votre LOH. LOH dans CLR n'est pas compacté, il est donc important de conserver LOH small, ou d'utiliser des techniques de mise en cache pour réutiliser des objets dans LOH (objet Object Heap contenant plus de 85000 octets).
  3. Throughput: Combien d'opérations que vous pouvez faire, ce qui est le temps de réponse pour votre application si elle dispose d'une interface utilisateur, le nombre de demandes qu'il peut gérer si elle est une application serveur ..etc

En ce qui concerne Diagnostics and Tracing, vous pouvez utiliser des classes dans l'espace de noms System.Dignostics, comme TraceListner, vous pouvez également considérer les événements ETW pour vos chemins de code critiques (Event Tracing For Windows dans MSDN a une bonne référence).

Vous pouvez créer vos propres classes personnalisées en haut des classes intégrées dans l'espace de noms System.Dignostics.

Un outil très utile que vous devez avoir dans votre sac de saisie est VS Profiler et un profileur CLR pour le profilage temporel et le profilage de la mémoire respectivement.

Vous pouvez utiliser un profileur pour avoir une idée de haut niveau général de vos fonctions à chaud, vous pouvez utiliser la classe StopWatch pour mesurer le temps pour certaines méthodes choisies, ou pour la synchronisation haute résolution, vous pouvez utiliser Windows QueryPerformanceCounter et QueryPerformanceFrequency API