32 votes

Quelles caractéristiques doit avoir un profileur C#/.NET ?

Il pourrait s'agir d'une publicité limite, pour ne pas dire subjective, mais la question est honnête. Au cours des deux derniers mois, j'ai développé un nouveau profileur open source pour .NET appelé SlimTune Profiler ( http://code.google.com/p/slimtune/ ).

Il s'agit d'un effort relativement récent, mais lorsque j'ai examiné la gamme de profileurs disponibles, je n'ai pas été terriblement impressionné. J'ai effectué un premier travail sur la base de produits existants, mais j'ai pensé que ce serait le bon endroit pour poser la question suivante : qu'attendez-vous exactement d'un profileur ?

Je viens du graphisme et des jeux en temps réel, il est donc important pour moi qu'un profileur soit aussi rapide que possible. Sinon, le jeu devient injouable et le profilage d'un jeu lent injouable n'est pas très instructif. Je suis donc prêt à sacrifier un peu de précision. Je ne me soucie même pas des exceptions. Mais je ne suis pas très au fait de ce qui intéresse les développeurs d'autres types d'applications. Existe-t-il des fonctionnalités qui font ou défont les choses pour vous ? Quels sont les points faibles des outils existants ?

Encore une fois, je m'excuse si cela est tout à fait hors sujet pour StackOverflow, mais il a toujours été une ressource incroyablement utile pour moi et il y a un très large éventail de développeurs ici.

7 votes

Je pense que c'est une question valable, surtout si l'on considère que vous construisez un logiciel. pour les développeurs et c'est une source ouverte. J'attends avec impatience les réponses !

0 votes

Secondé. C'est un outil pour les programmeurs.

0 votes

J'apprécie vraiment le fait qu'il s'agisse d'un logiciel libre, je verrai comment il se compare à dotTrace.

17voto

Preet Sangha Points 39414

Mes exigences :

  • Collecter des statistiques sans impact sur l'application - par exemple, ne pas remplir la mémoire, permettre la collecte de données en dehors des applications en question.
  • Capacité à spécifier des mesures de manière simple et répétable (axée sur les données)
  • Automatisable pour que je puisse répéter les mesures sans pointer et cliquer, et sans interface utilisateur.
  • nous permettre de comprendre les problèmes liés à WPF et à d'autres technologies déclaratives telles que DLR ou WF
  • Pas d'installation - pas de gac, msi etc., encore mieux s'il peut être exécuté sur un réseau.
  • Support 64 bits dès le départ
  • N'essayez pas de connaître toutes les analyses qui pourraient être faites - encouragez un écosystème. Si les statistiques brutes peuvent être analysées à l'aide d'autres outils, c'est encore mieux.
  • L'interface utilisateur, si elle existe, doit être bonne, mais ce sont les statistiques qui comptent. Ne passez donc pas de temps sur cela, obtenez un bon profilage de base.
    • Prendre en charge le profilage des applications qui ne sont pas des exe simples, comme les services et les applications web, tout simplement.

aimerait :

  • Tenir compte de la prise en charge des applications croisées - les grandes applications ont souvent besoin de comprendre le comportement des performances des applications dans de nombreux exécutables. Si votre profileur permet une corrélation facile de ces données, c'est encore mieux.

0 votes

En fait, j'ai déjà rencontré certains de ces problèmes : les données sont diffusées à partir de la cible du profil via une socket, vers des frontaux locaux ou distants. Le datastore de sauvegarde est SQL Server Compact, avec d'autres options à venir. J'envisagerai de mettre en place un système d'automatisation robuste, car je suis d'accord pour dire qu'il s'agit d'une fonctionnalité extrêmement importante qui manque dans de nombreux outils existants, et les données pilotées seront également liées à cela.

0 votes

Vous dites que le backing store est CE - faut-il l'installer ?

0 votes

@Promit - avez-vous déjà un produit ?

11voto

Sam Saffron Points 56236

Ma liste de souhaits :

  • Vraiment facile à utiliser - interface graphique simple (mais puissante)
  • Une performance spectaculaire - la possibilité de profiler les applications qui font l'objet d'une utilisation extrêmement intensive.
  • X64 y X32 soutien
  • Comprendre SQL est capable de me donner des traces de pile et la durée de tous mes appels SQL, couplés à SQL.
  • Facile à profiler, pas besoin de passer par un processus complexe de recompilation de l'application.
  • Des services, des sites web et des processus faciles à profiler qui sont lancés comme des effets secondaires.
  • Un "mode production" qui vous permet de recueillir les statistiques clés d'un système basé sur la production.
    • "Automatic bottleneck finder" : exécuté contre une application de production et utilisant des heuristiques pour déterminer quelles méthodes sont lentes.
  • Analyse par fil, dites-moi quels fils font tout le travail et où.
  • Établir un profil à différentes granularités, ce qui permet d'établir un profil "bon marché" qui ne recueille que les informations essentielles et d'approfondir le profilage granulaire.
  • Exception tracker, qui me permet de suivre toutes les exceptions qui sont lancées dans mon application (statistiques clés et informations détaillées).
  • Profilage par thread - me permettre de profiler un seul thread dans une application

4voto

Dan McClain Points 7036

Il y a EQATEC Profiler Il s'agit d'un profileur .Net gratuit que j'avais l'intention d'utiliser.

Une chose que j'aimerais voir est la compatibilité avec Mono. J'ai commencé à m'initier à Mono, et ce serait formidable d'avoir un profileur .Net et Mono !

4voto

280Z28 Points 49515

Téléchargez la version Team Suite de Visual Studio 2010 Beta 1 (gratuite pendant environ 6 mois ?), et profilez une application C#.

Faites-moi confiance. :)

Edit : Le mode ligne par ligne m'a aidé à isoler un opérateur qui causait un problème de performance. J'aurais pu le trouver sans la mise en évidence par ligne, mais lorsque vous pouvez faire défiler et voir les lignes chaudes qui l'utilisent, vous pouvez le corriger très facilement.

Oh, et si vous voulez des commentaires/de l'aide, contactez-moi séparément.

Vue synthétique : sélectionnez n'importe quelle section du graphique du CPU à filtrer.
Summary View
(source : <a href="http://www.280z28.org/images/vsx/ProfilingSummarySmall.png" rel="nofollow noreferrer">280z28.org </a>)

J'adore la ligne par ligne dans la marge :
Details View
(source : <a href="http://www.280z28.org/images/vsx/ProfilingDetailsSmall.png" rel="nofollow noreferrer">280z28.org </a>)

0 votes

Ooh, joli. Je ne sais pas si je vais implémenter la fonction ligne par ligne dans un avenir proche - cela me semble être une fonction à faible rendement et à coût élevé. Mais la vue de dessus est magnifique et je vais certainement prendre des idées à partir de cela. Il est temps de faire bon usage de mon abonnement à MSDN, je suppose.

0 votes

C'est une belle capture d'écran. Pour moi, l'analyse ligne par ligne est très importante, car même une chose simple peut prendre beaucoup de temps si elle est suffisamment appelée, et il est donc agréable de savoir exactement où le temps est passé.

0 votes

Eh bien, ligne par ligne est trop coûteux à utiliser en général, mais il serait Ce serait bien de pouvoir l'activer pour des fonctions spécifiques. Je trouve ennuyeux que si je veux trouver quelle ligne est lente dans une fonction, je dois abuser de "extract method" beaucoup.

3voto

Robert Harvey Points 103562

S'il faisait les mêmes choses que JetBrains dotTrace le fait, je serais très heureux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X