Quels sont certains bons profileurs .NET?

Quels profileurs avez-vous utilisés lors de l’utilisation de programmes .net et que recommanderiez-vous particulièrement?

    J’ai beaucoup utilisé JetBrains dotTrace et Redgate ANTS . Ils sont assez similaires en termes de caractéristiques et de prix. Ils offrent tous deux un profilage de performance utile et un profilage de mémoire assez basique.

    dotTrace s’intègre avec Resharper, ce qui est très pratique, car vous pouvez profiler les performances d’un test unitaire en un seul clic depuis l’EDI. Cependant, dotTrace semble souvent donner des résultats fallacieux (par exemple en disant qu’une méthode a pris plusieurs années)

    Je préfère la façon dont ANTS présente les résultats de profilage. Il vous montre le code source et à gauche de chaque ligne vous indique combien de temps il a fallu pour exécuter. dotTrace a juste une vue en arbre.

    Le profileur EQATEC est assez simple et vous oblige à comstackr des versions instrumentées spéciales de vos assemblages, qui peuvent ensuite être exécutées dans le profileur EQATEC. Il est cependant gratuit.

    Dans l’ensemble, je préfère ANTS pour le profilage des performances, mais si vous utilisez Resharper, l’intégration de dotTrace est une fonctionnalité hors du commun et signifie qu’il est plus facile à utiliser pour ANTS.

    Le profileur Microsoft CLR 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 possède une interface utilisateur assez simple mais de nombreuses informations utiles, y compris des informations sur la mémoire non gérée qui manquent à dotTrace et à ANTS – vous pourriez le trouver utile si vous effectuez une interopérabilité COM. problèmes de mémoire faciles à diagnostiquer – vous devez généralement décomposer windbg.exe .

    Le profileur ANTS a connu des hauts et des bas au cours des dernières années, et son profileur de mémoire présente des fonctionnalités très utiles qui le poussent désormais devant dotTrace en tant que package à mon avis. J’ai la chance d’avoir des licences pour les deux, mais si vous voulez acheter un profileur .Net à la fois pour les performances et la mémoire, faites-en ANTS.

    D’autres ont abordé 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 à la date de septembre 2009). J’ai essayé le JetBrains il y a un ou deux ans et ce n’était pas aussi bien que le système ANTS (pour le profilage de la mémoire), donc je n’ai pas pris la peine cette fois-ci. En lisant les sites Web, il semble qu’il n’ait 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, de sorte que le mieux dépendra de vos préférences. D’une manière générale, le Scitech fournit des informations plus détaillées alors que le système ANTS est vraiment incroyable pour identifier l’object qui fuit. Dans l’ensemble, je préfère le système ANTS, car il identifie si rapidement les fuites possibles.

    Voici les principaux avantages et inconvénients de chacun de mes expériences:

    Caractéristiques communes de ANTS et Scitech .NET Memory Profiler

    • Fonction d’parsing en temps réel
    • Excellentes vidéos pratiques sur leurs sites Web
    • Facile à utiliser
    • Raisonnablement performant (évidemment plus lent que sans le profileur attaché, mais pas tellement frustrant)
    • Afficher les instances de fuite d’objects
    • Fondamentalement, ils font le travail assez bien

    FOURMIS

    • Filtres en un clic pour rechercher les fuites courantes, notamment: les objects conservés en vie uniquement par les gestionnaires d’événements, les objects disposés mais toujours actifs et les objects qui ne sont conservés en vie que par une référence provenant d’un object éliminé. C’est probablement la fonction la plus meursortingère de l’ANTS – à cause de cela, la recherche de fuites est incroyablement rapide. D’après mon expérience, la majorité des fuites sont causées par des gestionnaires d’événements qui ne sont pas décrochés et ANTS vous amène directement à ces objects. Impressionnant.
    • Graphique de rétention d’object. Bien que les mêmes informations soient disponibles dans Scitech, elles sont beaucoup plus faciles à interpréter dans ANTS.
    • Affiche la taille avec les enfants en plus de la taille de l’object lui-même (mais uniquement lorsqu’une instance est malheureusement sélectionnée, et non dans la liste de classes globale).
    • Meilleure intégration à Visual Studio (clic droit sur le graphique pour accéder au fichier)

    Scitech .NET Memory Profiler

    • Affiche la trace de la stack lorsque l’object a été alloué. Ceci est vraiment utile pour les objects qui sont alloués dans de nombreux endroits différents. Avec ANTS, il est difficile de déterminer exactement où l’object divulgué a été créé.
    • Affiche le nombre d’objects jetables qui n’ont pas été éliminés. Bien qu’elle n’indique pas une fuite, elle identifie les possibilités de résoudre ce problème et d’améliorer les performances de votre application grâce à une récupération de la mémoire plus rapide.
    • Options de filtrage plus détaillées (plusieurs colonnes peuvent être filtrées indépendamment).
    • Présente des informations sur le nombre total d’objects créés (y compris ceux récupérés). ANTS ne montre que les statistiques d’object «live». Cela facilite l’parsing et le réglage des performances globales de l’application (par exemple, identifier où beaucoup d’objects créés inutilement ne fuient pas nécessairement).

    En résumé, je pense que ANTS vous aide à trouver plus rapidement les fuites, tandis que Scitech fournit un peu plus de détails sur les performances globales de votre mémoire applicative et les objects individuels une fois que vous savez quoi regarder (par exemple, trace de stack lors de la création). Si la trace de la stack et le suivi des objects 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 de .NET et sur un tas de plates-formes. Il est facile à utiliser et certaines parties sont gratuites, même pour un usage commercial.

    [ Divulgation complète ]

    Bien que n’étant 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 . Telerik est son principal objective: rendre la recherche et le profilage plus faciles et plus rapides 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, JustTrace peut valoir le coup d’œil.

    N’oubliez pas nProf – un profileur freeware parfait.

    J’ai trouvé que dotTrace Profiler de JetBrains était un excellent outil de profilage pour .NET et que leur mode ASP.NET était la qualité.

    ANTS Profiler . Je n’en ai pas beaucoup utilisé, mais je n’ai pas vraiment de plaintes à propos d’ATS. La visualisation est vraiment utile.

    AutomatedQA AQTime pour la synchronisation et SciTech MemProfiler pour la mémoire.

    Si vous recherchez quelque chose de rapide, facile et gratuit, http://code.google.com/p/slimtune/ semble bien fonctionner.

    J’ai travaillé avec JetBrains dotTrace pour WinForms et les applications de console (pas encore testé sur ASP.net), et ça marche plutôt bien:

    Ils ont récemment ajouté une “licence personnelle” qui est nettement moins chère que la licence d’entreprise. Pourtant, si quelqu’un d’autre en connaît des moins chers ou même des gratuits, j’aimerais aussi entendre 🙂

    N’oubliez pas le génial profileur de mémoire scitech .net

    C’est génial de savoir pourquoi votre application .net est à court de mémoire.

    J’appendais que la capacité de dotTrace à différencier les sessions de trace de mémoire et de performance est absolument inestimable (ANTS peut aussi avoir une fonction de diff, mais je n’ai pas vu de différence de performance).

    Pouvoir exécuter une session de profilage avant et après un correctif ou une amélioration, puis comparer les résultats est extrêmement précieux, en particulier avec une application .NET héritée (comme dans mon cas) où les performances n’ont jamais été prioritaires et où trouver des goulots d’étranglement Très fastidieux. Faire un diff avant-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 utilisez une application utilisant une firebase database 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 firebase database et comparer les résultats avec une firebase database «rapide» pour déterminer les opérations qui consortingbuent à la lenteur. Bien sûr, il existe de nombreux outils de performance côté firebase database, mais parfois, je vous aide vraiment à voir les mesures de performance du côté de l’application (car c’est plus proche de ce que voit réellement l’utilisateur).

    Bottom line: dotTrace fonctionne très bien, et le diff est inestimable.

    AQTime est raisonnable, mais présente une courbe d’apprentissage et n’est pas aussi facile à utiliser que celle intégrée 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 profileur bien intégré. C’est assez rapide et s’intègre très bien dans l’EDI de SharpDevelop et son runner NUnit. Les résultats sont affichés dans un style Arbre / Liste flexible (utilisez LINQ pour créer votre propre sélection). En double-cliquant sur la méthode affichée, vous accédez directement au code source.

    J’ai travaillé avec le profileur de RedGate dans le passé. Fait le boulot pour moi

    Je n’ai pas essayé moi-même, mais peut-être dotTrace ? Leur application ReSharper est certainement une bonne. Peut-être que dotTrace l’est aussi 🙂

    Je doute que le profileur fourni avec Visual Studio Team System soit le meilleur profileur, mais je l’ai trouvé suffisant à de nombreuses occasions. De quoi avez-vous spécifiquement besoin au-delà de ce que VS offre?

    EDIT: Malheureusement, il est seulement disponible dans VS Team System, mais si vous avez access à cela, cela vaut la peine de vérifier.

    La dernière version du profileur de mémoire ANTS (je pense que c’est 5) est tout simplement géniale !!! Je hantais une fuite en utilisant WinDbg et SOS, car cela s’est avéré être le meilleur moyen avant, puis j’ai essayé ANTS et je l’ai eu en quelques minutes. Vraiment un merveilleux logiciel.

    Je voudrais append votre kit de développement Java et .net, je l’adore pour Java, mais je n’ai pas essayé la version .NET.

    Malheureusement, la plupart des profileurs que j’ai essayés ont échoué lorsqu’ils ont été utilisés avec des appels de queue, notamment ANTS. Je finis par écrire le mien. Il existe une implémentation simple sur CodeProject que vous pouvez utiliser comme base.

    Analyseur de performances Intel® VTune ™ pour un échantillonnage rapide

    Je dois apporter un outil étonnant à votre attention que j’ai utilisé quelque temps auparavant. AVICode Interceptor Studio . Dans mon entreprise précédente, nous avons utilisé cet outil formidable pour profiler l’application Web (il s’agit de l’application Web la plus volumineuse 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

    Pour moi, SpeedTrace est le meilleur outil du marché car il ne vous aide pas seulement à détecter les goulots d’étranglement dans vos applications. Il vous aide également dans le dépannage des scénarios pour découvrir pourquoi votre application était bloquée, votre installation n’a pas été installée, votre application a été bloquée, les performances de votre application sont parfois médiocres en fonction des données saisies.

    J’ai testé récemment JustTrace de Telerik et bien que ce soit loin d’un produit fini, les gars vont dans la bonne direction.

    Si la gestion des licences pose problème, vous pouvez essayer WINDBG pour le profilage de la mémoire.

    Le profileur NuMega True Time se trouve dans DevPartner Studio de 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 utile). Il peut faire la distinction entre les routines lourdes d’un sharepoint vue algorithmique avec notre pilote de synchronisation en mode kernel par thread. La version 10.5 est livrée avec le nouveau support 64 processus le 4 février 2011. Plug sans vergogne: je travaille sur la gamme de produits DevPartner. Faites un suivi sur http://www.DevPartner.com pour des nouvelles du lancement de 10.5.

    Disclaimer: Je suis le chef de produit pour DevPartner chez Micro Focus.

    J’ai trouvé beaucoup de problèmes dans une grande application C # en utilisant ceci .

    Habituellement, le problème survient lors du démarrage ou de l’arrêt à mesure que les plug-ins sont chargés et que des structures de données volumineuses sont créées, détruites, sérialisées ou désérialisées. Souvent, ils sont créés et initialisés plus d’une fois, et les gestionnaires de modifications sont ajoutés plusieurs fois, ce qui aggrave le problème.

    Dans de tels cas, le programme peut être si lent que seulement 2 échantillons suffisent pour identifier les sites d’appel / fonction / propriété coupable.

    Nous avons sélectionné YourKit Profiler pour .NET dans ma société car c’était le meilleur rapport qualité / prix. Pour une petite entreprise qui souhaite disposer de licences flexibles (licences flottantes), c’était un choix parfait – ANTS était à l’époque le casier des développeurs.

    En outre, il nous a permis de joindre le processus en cours d’exécution, ce qui n’était pas possible avec dotTrace. Méfiez-vous bien que l’attachement ne soit pas la meilleure option car tout. NET ralentira, mais c’était la seule façon de profiler les applications .NET lancées par d’autres processus. Du sharepoint vue des fonctionnalités, ANTS et dotTrace étaient meilleurs – mais finalement YourKit était assez bon.

    Si vous êtes sur ASP.NET MVC, vous pouvez essayer MVCMiniProfiler (http://benjii.me/2011/07/using-the-mvc-mini-profiler-with-entity-framework/)