Diagnosing performance and memory issues in JavaScript-based Windows Store apps

De mauvaises performances peuvent décourager les utilisateurs d’utiliser nos applications. Il est important de proposer une appli « responsive » et prendre garde de ne pas bloquer l’IHM. Il est important d’essayer de garder une empreinte mémoire faible, et de s’intéresser aux bonnes pratiques.

Visual Studio est fourni avec un profiler javascript (tout comme IE) qui permet de tracer le temps d’exécution des fonctions et le nombre de fois qu’elles sont exécutées. Le profiler est visible dans le menu « Debug » de VS. Le mode « paused » du profiler permet de placer son appli dans un état défini avant de lancer la session de profiling.

En profiling on distingue « inclusive time » (temps global d’exécution), et « exclusive time » (temps d’exécution du code de la fonction, donc sans le temps des appels a d’autres méthodes).

Dans le applis WinJS, le javascript est compile en mode release mais pas en mode debug. Il peut donc y avoir de grosses différences de perfs entre les deux.

Le sdk win8 possède également un outil « performance analyser for HTML5 apps » qui permet d’analyser davantage d’éléments (program fils/windows kits/8.0/bin/x64/appperfanalyser). Il faut lancer l’outil et suivre le wizard. L’outil existe pour les différents processeurs, y compris ARM. On va avoir un rapport avec des warnings et des erreurs.

Il y a également un outil « javascript memory profiler » qui sera dispo dans le prochain update de Visual studio, mi-novembre (et en CTP pour l’instant). Comme son nom l’indique, il permet d’analyser l’utilisation de mémoire, et les fuites mémoire.

Point intéressant aussi, le speaker utilise le getthumbnail de winRT pour optimiser le chargement de grosses images downscallee pour être affichée dans les tuiles.

On voit aussi que comme en c#, un event ou une variable mal déréférencée peut induire des fuites mémoire importantes.

Guillaume

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s