Monitoring et test de performances d’une application windows phone 8
- 6 November, 2012 -
- Actus, Tutos Docs, Windows Phone, Windows Phone 8 -
- Tags : benchmark, CPU, CPU usage, monitoring, performances, test, Windows Phone 8, wp8, Xaml
- 0 Comments
Windows Phone 8 propose de nombreuses améliorations mais l'une des plus importante reste la possibilité de tracer les performances d'une application tout au long de son cycle d'utilisation via l'outil de monitoring.
Pour y accéder, il suffit de compiler l'application avec le mode monitoring activé comme montré ci-dessous.
A cet instant, Visual Studio vous propose trois modes de lancement, dans cet article nous ne verrons que le premier.
Ensuite, vous pouvez utiliser l'application comme bon vous semble et faire tous les tests que vous pensez utiles. Lorsque vous quittez l'application, vous avez accès à un rapport d'exécution complet au format Html affichant 3 niveaux de détail :
- Un récapitulatif global
Constituée de huit sections, cette vue représente le premier niveau de zoom vous permettant d'identifier d'éventuel défauts de performances.
Les trois premières sections sont préfixées par un marqueur de couleur vert ou rouge vous indiquant un status normal ou une anomalie. Elles concernent la durée de lancement, la durée de réactivation (après un verrouillage par exemple), et pour finir, la réactivité de l'interface utilisateur (CPU).
Les 5 qui suivent sont importantes mais la mesure de leur qualité sera fonction de facteurs externes. Par exemple, la consommation de la batterie sera plus ou moins handicapante selon le modèle de téléphone et son autonomie ou encore lié au type d'application que vous testez. De même, la consommation de la bande passante sera plus ou moins sensible selon ce que l'opérateur facture ou permet sur son réseau. Pour cette raison, apposer un voyant de couleur n'est pas forcément pertinent.

- Une timeline avec le détail pour chaque catégorie d'indicateur
Cette dernière décomposée elle-même en plusieurs sous pistes vous permettra de suivre le cycle d'utilisation complet.
Dans cette vue, toutes les actions utilisateur sont indiquées par des marqueurs de temps jaunes situes sur la ligne de temps. On a réellement l'impression d'utiliser un logiciel de montage vidéo. Sauf que dans cette vue, chaque piste représente un thème majeur comme la cadence (Framerate), l'occupation mémoire, l'usage CPU décomposé des différents threads ou encore l'utilisation de la bande passante. Une liste d'alertes est disponible en dessous de ces pistes, cliquer sur l'une d'elles permet de se rendre directement au TimeCode correspondant.

- Une vue de zoom
Ce qui est particulièrement bluffant, c'est qu'il est même possible de zoomer sur des portions du cycle d'utilisation pour se concentrer sur les phases où les performances sont mauvaises. De cette manière, il est plus facile de cibler le cœur du problème. On passe alors en vue détail, la liste d'alertes est remplacée par ne sorte de log d'utilisation.
Cerise sur le gâteau, chaque événement utilisateur ou appel de fonction est associé à une jauge de performance ce qui permet de très simplement cibler les portions du code en surconsommation de CPU ou de mémoire.

Vous remarquerez à l'usage que l'objectif consiste souvent à décharger le UI Thread et à maximiser l'utilisation du Composition Thread pour tous les traitements d'arrière-plan. Par exemple, récemment j'avais besoin d'enregistrer des musiques dans l'Isolated Storage, un BackgroundWorker permettra de le faire sans interrompre ou ralentir le thread UI.


