Réponses:
J'ai beaucoup utilisé JetBrains dotTrace et Redgate ANTS . Ils sont assez similaires en termes de fonctionnalités et de prix. Ils offrent tous deux un profilage des performances utile et un profilage de la mémoire assez basique.
dotTrace s'intègre à Resharper, ce qui est très pratique, car vous pouvez profiler les performances d'un test unitaire en un seul clic depuis l'IDE. Cependant, dotTrace semble souvent donner de faux résultats (par exemple en disant qu'une méthode a pris plusieurs années à fonctionner)
Je préfère la façon dont ANTS présente les résultats du profilage. Il vous montre le code source et à gauche de chaque ligne vous indique le temps nécessaire à l'exécution. dotTrace a juste une vue arborescente.
Le profileur EQATEC est assez basique et vous oblige à compiler des versions instrumentées spéciales de vos assemblages qui peuvent ensuite être exécutées dans le profileur EQATEC. C'est cependant gratuit.
Dans l'ensemble, je préfère ANTS pour le profilage des performances, bien que si vous utilisez Resharper, l'intégration de dotTrace soit une fonctionnalité mortelle et signifie qu'elle bat ANTS en termes de convivialité.
Le Microsoft CLR Profiler gratuit ( .Net Framework 2.0 / .Net Framework 4.0 ) est tout ce dont vous avez besoin pour le profilage de la mémoire .NET.
Mise à jour 2011:
Le profileur de mémoire Scitech a une interface utilisateur assez basique mais beaucoup d'informations utiles, y compris certaines informations sur la mémoire non gérée qui manquent à dotTrace et ANTS - vous pourriez le trouver utile si vous faites de l'interopérabilité COM, mais je n'ai pas encore trouvé de profileur qui fasse COM problèmes de mémoire faciles à diagnostiquer - vous devez généralement vous évader windbg.exe
.
Le profileur ANTS a progressé à pas de géant au cours des dernières années, et son profileur de mémoire possède des fonctionnalités vraiment utiles qui l'ont désormais propulsé devant dotTrace en tant que package à mon avis. J'ai la chance d'avoir des licences pour les deux, mais si vous allez acheter un profileur .Net pour les performances et la mémoire, faites-en ANTS.
D'autres ont couvert le profilage des performances, mais en ce qui concerne le profilage de la mémoire, j'évalue actuellement à la fois Scitech .NET Memory Profiler 3.1 et ANTS Memory Profiler 5.1 (versions actuelles en septembre 2009). J'ai essayé le JetBrains il y a un an ou deux et ce n'était pas aussi bon que ANTS (pour le profilage de la mémoire), donc je n'ai pas pris la peine cette fois. D'après la lecture des sites Web, il semble qu'il ne possède pas les mêmes fonctionnalités de profilage de la mémoire que les deux autres.
ANTS et le profileur de mémoire Scitech ont tous deux des fonctionnalités que l'autre n'a pas, donc ce qui dépendra le mieux de vos préférences. De manière générale, celui de Scitech fournit des informations plus détaillées tandis que celui de ANTS est vraiment incroyable pour identifier l'objet qui fuit. Dans l'ensemble, je préfère celui ANTS car il est si rapide à identifier les fuites possibles.
Voici les principaux avantages et inconvénients de chacun de mon expérience:
Caractéristiques communes à ANTS et Scitech .NET Memory Profiler
FOURMIS
Profileur de mémoire Scitech .NET
En résumé, je pense que ANTS vous aide à trouver ce qui fuit plus rapidement tandis que Scitech fournit un peu plus de détails sur les performances globales de la mémoire de votre application et les objets individuels une fois que vous savez quoi regarder (par exemple, trace de pile lors de la création). Si la trace de la pile et le suivi des objets jetables non jetés étaient ajoutés à ANTS, je ne verrais pas la nécessité d'utiliser autre chose.
J'ai récemment découvert EQATEC Profiler http://www.eqatec.com/tools/profiler . Il fonctionne avec la plupart des versions .NET et sur un tas de plates-formes. Il est facile à utiliser et certaines parties sont gratuites, même pour un usage commercial.
Bien qu'il ne soit pas encore aussi complet que certains des autres profileurs de mémoire .NET répertoriés ici, il existe une nouvelle entrée sur le marché appelée JustTrace . Il est fait par Telerik et son objectif principal est de rendre le traçage / profilage plus facile et plus rapide à faire pour tous les types d'applications (web / Silverlight / desktop).
Si vous avez déjà trouvé le profilage et l'optimisation intimidants ou lents avec d'autres outils, alors JustTrace pourrait valoir le coup d'œil.
N'oubliez pas nProf - un bon profileur de logiciels gratuits.
J'ai trouvé que dotTrace Profiler par JetBrains était un excellent outil de profilage pour .NET et leur mode ASP.NET est de qualité.
ANTS Profiler . Je n'en ai pas utilisé beaucoup, mais je n'ai pas vraiment de plaintes concernant les fourmis. La visualisation est vraiment utile.
AutomatedQA AQTime pour le chronométrage et SciTech MemProfiler pour la mémoire.
Si vous cherchez quelque chose de rapide, facile et gratuit, http://code.google.com/p/slimtune/ semble faire l'affaire.
J'ai travaillé avec JetBrains dotTrace pour WinForms et Console Apps (pas encore testé sur ASP.net), et cela fonctionne plutôt bien:
Ils ont récemment ajouté une "licence personnelle" qui est nettement moins chère que celle de l'entreprise. Pourtant, si quelqu'un d'autre en connaît d'autres moins chers ou même gratuits, j'aimerais aussi entendre :-)
N'oubliez pas le génial profileur de mémoire scitech .net
C'est génial pour savoir pourquoi votre application .net manque de mémoire.
J'ajouterais que la capacité de dotTrace à différencier la mémoire et les sessions de suivi des performances est absolument inestimable (ANTS peut également avoir une fonction de différence de mémoire, mais je n'ai pas vu de différence de performance).
Pouvoir exécuter une session de profilage avant et après une correction de bogue ou une amélioration, puis comparer les résultats est incroyablement précieux, en particulier avec une application .NET gigantesque (comme dans mon cas) où les performances n'ont jamais été une priorité et où trouver des goulots d'étranglement pourrait être TRÈS fastidieux. Faire un diff avant et après vous permet de voir le changement du nombre d'appels pour chaque méthode et le changement de durée pour chaque méthode .
Cela est utile non seulement lors des modifications de code, mais également si vous avez une application qui utilise une base de données différente, par exemple, pour chaque client / client. Si un client se plaint de lenteur, vous pouvez exécuter une session de profilage à l'aide de sa base de données et comparer les résultats avec une base de données "rapide" pour déterminer quelles opérations contribuent à la lenteur. Bien sûr, il existe de nombreux outils de performance côté base de données, mais parfois j'aide vraiment à voir les mesures de performance du côté de l'application (car c'est plus proche de ce que l'utilisateur voit réellement).
Conclusion: dotTrace fonctionne très bien et le diff est inestimable.
AQTime est raisonnable, mais a un peu de courbe d'apprentissage et n'est pas aussi facile à utiliser que celui intégré dans Team Suite
Dans le passé, j'ai utilisé le profileur fourni avec Visual Studio Team System .
La version actuelle de SharpDevelop (3.1.1) a un joli profileur intégré. Il est assez rapide et s'intègre très bien dans l'IDE SharpDevelop et son runner NUnit. Les résultats sont affichés dans un style d'arborescence / liste flexible (utilisez LINQ pour créer votre propre sélection). Double-cliquer sur la méthode affichée saute directement dans le code source.
Je doute que le profileur fourni avec Visual Studio Team System soit le meilleur profileur, mais je l'ai trouvé assez bon à de nombreuses reprises. De quoi avez-vous spécifiquement besoin au-delà de ce que propose VS?
EDIT: Malheureusement, il n'est disponible que dans VS Team System, mais si vous y avez accès, cela vaut la peine de le vérifier.
Analyseur de performances Intel® VTune ™ pour un échantillonnage rapide
Je dois apporter à votre attention un outil étonnant que j'ai déjà utilisé. AVICode Interceptor Studio . Dans mon entreprise précédente, nous avons utilisé ce merveilleux outil pour profiler l'application Web ( il s'agit de la plus grande application Web au monde et du plus grand projet informatique civil jamais réalisé ). L'équipe de performance a fait des merveilles avec l'aide de ce magnifique outil. C'est difficile de le configurer, mais c'est une activité ponctuelle et je dirais que cela en vaut la peine. Consultez cette page pour plus de détails.
Merci, James
SpeedTrace est pour moi le meilleur outil du marché car il ne vous aide pas seulement à trouver des goulots d'étranglement dans vos applications. Il vous aide également à résoudre les scénarios pour savoir pourquoi votre application se bloquait, votre configuration ne s'est pas installée, votre application a raccroché, les performances de votre application sont parfois médiocres en fonction de l'entrée de données, par exemple pour identifier les transactions db lentes.
J'ai testé JustTrace de Telerik récemment et bien qu'il soit loin d'un produit fini, les gars vont dans la bonne direction.
Le profileur NuMega True Time est toujours présent dans DevPartner Studio par Micro Focus. Il fournit des détails au niveau de la ligne et de la méthode pour les applications .NET ne nécessitant que des PDB, aucune source nécessaire (mais cela aide.) Il peut faire la distinction entre les routines algorithmiquement lourdes et celles avec de longues attentes d'E / S en utilisant notre pilote de synchronisation propriétaire en mode noyau par thread. La version 10.5 est livrée avec une nouvelle prise en charge de 64 processus le 4 février 2011. Plug sans vergogne: je travaille sur la gamme de produits DevPartner. Suivez http://www.DevPartner.com pour des nouvelles du lancement de la version 10.5.
Avertissement: je suis le chef de produit de DevPartner chez Micro Focus.
J'ai trouvé beaucoup de problèmes dans une grande application C # en utilisant cela .
Habituellement, le problème se produit au démarrage ou à l'arrêt lorsque des plug-ins sont chargés et que des structures de Big Data sont créées, détruites, sérialisées ou désérialisées. Souvent, ils sont créés et initialisés plusieurs fois, et les gestionnaires de modifications sont ajoutés plusieurs fois, ce qui aggrave encore le problème.
Dans des cas comme celui-ci, le programme peut être si lent que seulement 2 échantillons sont suffisants pour localiser les sites d'appels de méthode / fonction / propriété coupables.
Nous avons sélectionné YourKit Profiler pour .NET dans mon entreprise, car c'était la meilleure valeur (prix par rapport à la fonctionnalité). Pour une petite entreprise qui souhaite disposer de licences flexibles (licences flottantes), c'était un choix parfait - ANTS était à l'époque le médaillon du siège développeur.
De plus, cela nous a donné la possibilité de nous attacher au processus en cours, ce qui n'était pas possible avec dotTrace. Attention cependant, l'attachement n'est pas la meilleure option car tout .NET ralentira, mais c'était le seul moyen de profiler les applications .NET démarrées par d'autres processus. En ce qui concerne les fonctionnalités, ANTS et dotTrace étaient meilleurs - mais au final, YourKit était assez bon.