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: Nettoyage des versions de List Item avant migration depuis SharePoint On Premise vers SharePoint Online par Blog Technique de Romelard Fabrice le 08-08-2017, 15:36

- Office 365: Comment supprimer des éléments de liste SharePoint Online via PowerShell par Blog Technique de Romelard Fabrice le 07-26-2017, 17:09

- Nouveau blog http://bugshunter.net par Blog de Jérémy Jeanson le 07-01-2017, 16:56

- Office 365: Script PowerShell pour assigner des droits Full Control à un groupe défini par Blog Technique de Romelard Fabrice le 04-30-2017, 09:22

- SharePoint 20XX: Script PowerShell pour exporter en CSV toutes les listes d’une ferme pour auditer le contenu avant migration par Blog Technique de Romelard Fabrice le 03-28-2017, 17:53

- Les pièges de l’installation de Visual Studio 2017 par Blog de Jérémy Jeanson le 03-24-2017, 13:05

- UWP or not UWP sur Visual Studio 2015 ? par Blog de Jérémy Jeanson le 03-08-2017, 19:12

- Désinstallation de .net Core RC1 Update 1 ou SDK de Core 1 Preview 2 par Blog de Jérémy Jeanson le 03-07-2017, 19:29

- Office 365: Ajouter un utilisateur ou groupe dans la liste des Site collection Administrator d’un site SharePoint Online via PowerShell et CSOM par Blog Technique de Romelard Fabrice le 02-24-2017, 18:52

- Office 365: Comment créer une document library qui utilise les ContentTypeHub avec PowerShell et CSOM par Blog Technique de Romelard Fabrice le 02-22-2017, 17:06