Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

//Build/ 2012: Retour sur la session “Diagnosing performance and memory issues in Javascript based Windows Store Apps”

Cette Session était centrée sur les outils proposés par Visual Studio pour le diagnostic de nos applications Windows Store en JavaScript. Le speaker est Andrew Hall, membre de l’équipe de développement des outils de profiling de Visual Studio 2012.

Dans ce billet, je vais revenir sur les outils présentés dans cette session de façon synthétique. Je reviendrai dessus plus en détail dans des prochains billets de blog.

Au programme:

  • Bonnes pratiques pour les perfs
  • Visual Studio Profiler
  • HTML5 Performance Analyser
  • Profileur mémoire Javascript

 

Pré-requis: Pour utiliser les outils présentés dans la session, il faut récupérer le Quarter Update #1 de Visual Studio 2012 en vous rendant sur http://www.microsoft.com/fr-fr/download/details.aspx?id=34818

 

Bonnes pratiques

=> Ne pas bloquer le thread de rendu de l’interface graphique!

=> Les délais au dela de 100ms sont remarqués par les utilisateurs

=> Découper les grosses opérations ou utiliser des web workers

=> surveiller la mémoire utilisée par l'app: Plus légere sera l'app, moins de chance elle aura de planter

=> Tenter d’améliorer les perfs de l'app régulièrement

 

Visual Studio 2012 Javascript profiler

Le profiling génère une rapport qui fourni:

  • Le temps d'exec de chaque methode
  • Le nombre exact total d'appels a chaque methode

Les metriques ne montrent queles temps d’exécution du code Javascript et pas le temps des autres services (rendering, layout, etc…)

 

Le vocabulaire du profiler Javascript:

=> inclsuive time: temps total d’exécution, comprenant les fonctions enfants

=> exclusive time: temps total d’exécution, ne comprenant pas le temps des fonctions enfants

Comment utiliser le profiler JS:

Menu Debug>Start performance Analysis ou Start performance Analysis Paused

La version “Paused” permet de ne pas lancer immédiatelment le profiling. Il suffit d’utiliser son app, puis quand on veut démarrer le profiling, il suffit de bascule dans Visual Studio et de cliquer sur Start profiler 

Ensuite, exécutez les actions que vous souaitez analyser, puis faites Stop profiling pour génrer le rapport des infos enregistrées.

Dans le rapport (fichier *.vspx), on trouve notamment les infos suivantes:

  • Le HOT PATH est l'arbre des méthodes les plus gourmandes (avec le % de temps d'exec sur le total)
  • les Functions with most individual work
  • le Call tree wiew: contient les détails du temps, du nombre exact d'appels etc… pour chaque methode!

On peut alors parcourir le detail d'exec des méthodes et voir les metrics. Il suffit de modifier le code qui est lent pour tenter de l’optimiser on rerun et de comparer les resultats avec le précédent profiling.

 

HTML5 performance analyzer

Cet outil est installé avec le SDK Win8. Il génère un rapport qui mesure 13 points clés de perfs:

  1. Les temps d’activation
  2. Le temps de réponse de l’UI
  3. Le nombre d’appels au process de Layout
  4. Les requetes synchones XMLHttpRequest sur le thread UI
  5. Les redimensionnements d’image
  6. L’empreinte mémoire
  7. Les sets de références mémoire bloquant le Runtime
  8. Les fuites mémoires
  9. L’état Idle du CPU
  10. Les phases d’attente
  11. Les réduction de l’occupation mémoire pendant les phases d’attente
  12. La croissance de l’occupation mémoire de l’app
  13. Les pics d’occupation mémoire bloquants pour le Runtime

Utilisation du  HTML5 performance analyser

Lancer le programme et sélectionner l'app dans la liste puis suivre les instructions données par l'analyser:

  • Lancer et utiliser l'app qques minutes et tourner le device dans tous les sens, on teste le snap… etc…
  • Le programme analyse les perfs et génère le rapport

Le rapport généré est un fichier HTML qui liste les resultats des fonctionnalités testées. Il y a 3 états possible: PASSED, WARNING et FAILED. Les warning et failed fournissent des details sur le problème et comment le fixer.

Les failed sont des points qui sont sensibles au niveau des perfs et doivent etre fixés pour assurer des bonnes performances.

 

Javascript memory Profiler

Cet outil permet d’identifier les espaces mémoires retenus de façon non intentionnelle. Il se base sur des snapshots de l'état du Heap Javascript à un moment donné.

Les informations proposés dans nos snapshots montrent les éléments JS et DOM:

  • Taille de l’objet en mémoire
  • Nombre d’instances de l’objet
  • Graph des références (appels et référence à l'element dans le projet)

Le vocabulaire du profileur mémoire:

  • Size: taille de l’object en memoire (son instance à lui, sans les instance liée)
  • Retained size: la qtité de memoire de l'objet dans le garbage collector = quantité de mémoire libérée si on supprime l’objet (son instance + d’éventuelles insatnce liées qui seront supprimées avec elle)

Utilisation du profileur mémoire:

Lancer le profileur mémoire javascript: dans le ménu DEBUG > launch Javascript Memory Analysis et choisir l'app (package) installé.

On execute l'application et on prend des snapshots au moments de certaines actions clés pour analyser la charge mémoire pour les éléments du DOM et du Javascript.

Avec plusieurs snapshots, on peut alors voir les évolutions entre deux snapshots et remonter jusqu'à la source du problème.

 

 

Encore un fois, je vous proposerai très rapidement des articles plus détaillés sur l’utilisation de ces nouveaux outils très prometteurs!

 

A très bientôt!!

 

build

Publié jeudi 1 novembre 2012 06:07 par Philess
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

- Etendre le Team Web Access de TFS 2012 – Step 0 par Philippe Didiergeorges Aka Philess le il y a 1 heure et 30 minutes

- Simuler facilement l’envoi de mail par Blog de Jérémy Jeanson le 05-22-2013, 12:52

- ProcDump 6.0 : support du filtrage sur messages d'exceptions .NET, des filtres multiples et du ciblage par nom de service par CoqBlog le 05-20-2013, 14:50

- Votez pour le TOP 10 des influenceurs SharePoint francophones ! par Le blog de Patrick [MVP SharePoint] le 05-20-2013, 12:59

- [Conf’SharePoint] Dernier rappel ! :-) par Le blog de Patrick [MVP SharePoint] le 05-20-2013, 09:09

- [ #SharePoint 2013 ] les modèles de sites standards… par Le blog de Patrick [MVP SharePoint] le 05-20-2013, 09:03

- 10 erreurs de compréhension concernant SharePoint… par Le blog de Patrick [MVP SharePoint] le 05-20-2013, 08:27

- Conf’SharePoint : 10 bonnes raisons pour ne pas la rater par Le petit blog de Pierre / Pierre's little blog le 05-14-2013, 02:24

- [Event] Soirée de lancement Agile .NET France à Lyon par Blog Agile/ALM de Vincent THAVONEKHAM le 05-13-2013, 01:29

- .NET / Debug : inspection de la mémoire d'applications .NET (dump ou processus live) : première livraison d'une librairie .NET par Microsoft par CoqBlog le 05-11-2013, 22:21