Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Azra [Florent Santin]

.Net, X'Net, aucun lien de parenté V2.0

Actualités


  • MSN Alerts
    View Florent Santin's profile on LinkedIn
[VS 2010 Team Dev] Quoi de neuf dans le Profiler?

Depuis Visual Studio 2005 Team Dev, le profiler de code permet de mettre en avant les goulets d’étranglement d’une application testée (quelles sont les fonctions qui prennent le plus de temps, quelles sont celles qui consomment le plus de mémoire…).

En version 2008, celui à juste reçut 2 fonctionnalités additionnelles mais fort pratique:

  • Comparaison de rapport: pour savoir si les modifications sur le code ont eut un impact positif / négatif sur les performances
  • Mise en avant du chemin critique: dans un rapport avec un arbre d’appel conséquent, le goulet d’étranglement est directement mis en avant

(détaillées ici)

La version 2010 voit encore son petit lot de nouveautés permettant d’améliorer encore l’expérience de l’utilisation de celui-ci, au programme de ce post:

  • Modification de l’assistant de création de séance de profiling
  • Profiling multi-applications
  • Améliorations du rapport général
  • Une nouvelle vue dans le rapport: functions détails
  • Profiling de JavaScript
  • Stockage des données de configuration de performance

 

Modification de l’assistant de création de séance de profiling

VS 2008:

image image image

VS 2010:

 image image image 

Modifications:

L’ordre des fenêtres a changé, on décide d’abord du type de profiling avant de choisir l’application ciblée.

Sur le type de profiling, deux nouvelles options sont apparues:

  • .NET Memory Allocation (Sampling): permet de faire une séance de profiling en se concentrant non pas sur les temps d’exécution des méthodes, mais sur la consommation mémoire de chacune. Ce mode était activable avant au travers d’un menu contextuel et du paramétrage une fois l’assistant passé. L’atteindre sera maintenant plus intuitif
  • Concurrency: Nouveau mode de profiling qui se concentre sur la détection des problèmes lié aux applications multithread (car le profiler gère ce type d’application de mieux en mieux depuis sa version 2008)

Sur le type des applications pouvant être profiler, aucun changement si ce n’est le remplacement d’une DropDownLost par une ListBox (a noter que cela permet du coup de sélectionner plusieurs projets à Profiler en même temps!).

Sur la derrière fenêtre, une case cochée par default permet de lancer automatiquement (cela surprend la première fois de voir l’application s’exécuter immédiatement).

 

Profiling multi-application

 image image

Il est possible de profiler d’un coup plusieurs tiers d’une application (en 2008, il fallait ouvrir une instance de Visual Studio pour chacun) et de faire apparaitre du coup un rapport de dépendances (combien de fois une des pages de mon application Web fait appel à un service de ma couche WCF).

Je ne peux pas détailler plus pour l’instant car cette fonctionnalité semble dysfonctionner dans la béta 1 (j’éditerai le post plus tard).

Améliorations du rapport général

VS 2008:

image

VS 2010:

image

Modifications:

Bon, la capture d’écran parle d’elle même, Visual Studio 2010 est en WPF, l’équipe qui fait le profiler en a profité pour faire quelque chose de beau.

A noter donc:

  • en haut a gauche, une gestion de l’historique dans les scénarios d’analyse des rapports, qui permet donc de revenir en arrière lorsque l’on navigue de rapport en rapport en détail de rapport...
  • en haut au milieu, toujours la possibilité de changer de vue d’analyse (Summary, Call Tree, Modules, Caller/Callee, Functions, Function details, Mark, Process) et quelques icones d’option (notamment une nouvelle option de split de fenêtre, grisée dans la beta)
  • Au milieu gauche, la mise en avant du chemin critique, directement ici
  • En bas, le détail des fonctions qui ont pris le plus de temps mais avec une vue en % et en graphe, plus simple à la lecture
  • Au milieu droit, les options accessible habituellement de la barre d’outil et du menu contextuel en mode “détaillé” pour aller directement vers l’option désirée

 

Une nouvelle vue dans le rapport: Function Détails

Permet d’avoir une cartographie en WPF de l’utilisation d’une méthode, avec vue en même temps sur son code

image

Ici on remarque, que la méthode “MethodeB” (dont le code s’affiche en bas) est appelée pendant 222,0 millisecondes dans la méthode A (zone bleu de gauche) et que durant son appel, 0,8 millisecondes sont exploitées dans son code, 217,7 dans le sous appel à System.String.Concat(), 3,5 a Int32.ToString() et moins de 0,1 a Object.ToString().

Cette méthode représente également (au milieu de l’écran), 53,0% du temps d’exécution de l’application.

En mode “informations mémoire”, des instructions apparaissent directement dans le designer de code (par exemple ci-dessous, en rouge ce qui consomme le plus de mémoire avec sur la gauche la taille que cela représente).

image

 

Profiling de JavaScript

En mode instrumentation, il est maintenant possible d’activer le profiling du JavaScript trouvé dans une analyse de navigation Web.

Il suffit pour ceci d’activer l’option (désactivée par default), d’une séance de profiling Web.

image

Soit le code suivant:

image

Le profiler remonte dans son rapport le chemin d’exécution suivant:

image

et toujours la fenêtre de détail liée:

image

 

Stockage des données de configuration de performance

Toute petite fonctionnalité mais bien pratique, la configuration d’une session de performance est maintenant stockée au coté de la Solution, dans un répertoire Solution Items (avant c’était un fichier non lié, dépendant du Visual Studio de la personne ayant fait l’analyse de performance).

Ceci est pratique pour pour re-trouver les anciennes configuration et surtout les versionner pour diffuser aux autres membres de l’équipe via un contrôleur de code source (et leur permettre ainsi d’analyser les performance de l’application avec le même paramétrage).

image

 

 

Voila, bonne découverte!

(je compléterai ce post au fur et à mesure des modifications)

Posted: vendredi 22 mai 2009 09:58 par azra
Classé sous :
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Office 365: Comment exporter tous les comptes Azure Active Directory ayant une license via PowerShell par Blog Technique de Romelard Fabrice le 05-17-2018, 13:46

- PowerShell: Comment avoir le Country Name depuis un Country Code par Blog Technique de Romelard Fabrice le 05-17-2018, 13:20

- Office 365: Comment supprimer un compte externe d’un site SharePoint Online en mode Extranet par Blog Technique de Romelard Fabrice le 05-11-2018, 17:00

- Office 365: Comment reconfigurer le lien “Bloc-notes” d’un teamsite par Blog Technique de Romelard Fabrice le 05-09-2018, 16:45

- Office 365: Utiliser l’option “Alert Me” de la page de résultat de recherche par Blog Technique de Romelard Fabrice le 05-09-2018, 14:57

- Office 365: Comment télécharger l’image de profil de Delve par Blog Technique de Romelard Fabrice le 05-09-2018, 14:28

- Office 365: Valeur “Country or Region” et “User Location” dans Azure AD par Blog Technique de Romelard Fabrice le 05-04-2018, 12:08

- Office 365: Menu d’administration non visible dans une page SharePoint par Blog Technique de Romelard Fabrice le 05-04-2018, 11:50

- Office 365: Comment avoir un minimum de statistiques d’usage de votre site SharePoint Online par Blog Technique de Romelard Fabrice le 05-04-2018, 11:41

- Office 365: Reconfigure la gestion des demande d’accès dans SharePoint par Blog Technique de Romelard Fabrice le 05-04-2018, 10:41