Planifier les performances

Applies to Windows and Windows Phone

Les applications lentes, qui ne répondent pas ou qui utilisent trop la batterie, sont une cause de frustration intense pour les utilisateurs. À l’inverse, les applications rapides, réactives et peu gourmandes en batterie ravissent et fidélisent les utilisateurs. Lorsque vous planifiez votre application du Windows Store, les performances doivent être un élément fondamental.

Il est très important de planifier, concevoir et tester les performances de votre application, tout comme n’importe quelle autre fonctionnalité de votre application. Suivez ce processus pour planifier les performances de vos applications.

  1. Définissez des objectifs de performances pour vos applications.
  2. Concevez des applications performantes.
  3. Instrumentez vos applications pour les performances.
  4. Testez vos applications et mesurez leurs performances par rapport aux objectifs fixés.
  5. Répétez et améliorez les conceptions de vos applications en fonction des résultats des tests de performances.

Vous trouverez ci-dessous des informations détaillées sur chaque étape de ce processus.

Définir les objectifs de performances de l’application

Les objectifs de performances de vos applications doivent être précis et mesurables. Afin que ces objectifs soient précis, il est utile de penser à la rapidité, la fluidité et l’efficacité de vos applications : le temps nécessaire aux utilisateurs pour effectuer des actions dans vos applications, la réactivité de l’application aux interactions utilisateur et la conservation de l’autonomie de la batterie.

Rapidité

Vous pouvez commencer par penser aux plages de temps acceptables pour que les utilisateurs effectuent leurs tâches dans vos applications. Nous appelons ces plages de temps des classes d’interaction. Pour chacune de ces classes d’interaction, vous pouvez assigner par exemple une étiquette, le sentiment de l’utilisateur, une durée cible et une durée maximale. Vous trouverez ci-dessous des suggestions de classes d’interaction et des exemples pour chacune d’entre elles.

Étiquette de classe d’interactionPerception de l’utilisateurCibleMaximumExemples
RapiditéDélai presque imperceptible100 millisecondes200 millisecondesAfficher la barre de l’application ; appuyer sur un bouton (première réponse)
TypiqueRapide, mais pas très rapide300 millisecondes500 millisecondesRedimensionner ; zoom sémantique
RéactivitéPas rapide, mais semble réactive500 millisecondes1 secondeAccéder à une autre page ; relancer l’application à partir d’un état interrompu
LancementExpérience compétitive1 seconde3 secondesLancer l’application pour la première fois ou après un arrêt
ContinuNe semble plus répondre500 millisecondes5 secondesTélécharger un fichier d’Internet
CaptifLong ; l’utilisateur peut décider de quitter500 millisecondes10 secondesInstaller plusieurs applications à partir du Windows Store

 

Une fois que vous disposez d’un ensemble de classes d’interaction, vous pouvez les affecter à vos scénarios de performances d’application. Pour chaque scénario, vous pouvez par exemple affecter une référence dans le temps, une partie de l’expérience utilisateur et une classe d’interaction. Vous trouverez ci-dessous des scénarios de performances pour un exemple d’application de cuisine et restauration.

ScénarioPoint dans le tempsExpérience utilisateurClasse d’interaction
Accéder à une page de recette Première réponseDémarrage de l’animation de transition de pageRapide (100-200 millisecondes)
RéactivitéChargement de la liste des ingrédients ; sans imagesDynamique (500 millisecondes - 1 seconde)
Visuel terminéContenu chargé ; images affichéesContinu (500 millisecondes - 5 secondes)
Rechercher des recettesPremière réponseClic sur le bouton RechercherRapide (100 - 200 millisecondes)
Visuel terminéListe des titres de recettes en local affichéeTypique (300 - 500 millisecondes)

 

Après avoir défini un ensemble de scénarios de performances, vous serez en mesure de tester, d’analyser et d’améliorer la vitesse de votre application.

Fluidité

Pour une réactivité fluide, les objectifs de performances mesurables spécifiques pour vos applications peuvent être notamment :

  • Pas d’arrêt et de redémarrage du dessin à l’écran (problèmes).
  • Les animations à l’écran se produisent à une vitesse de 60 images par secondes, 16 millisecondes de temps processeur et travail GPU par image.
  • Quand un utilisateur effectue un mouvement panoramique dans votre application, vous devez avoir pour objectif l’affichage de 3 à 6 pages de contenu par seconde.

Efficacité

Pour l’efficacité, les objectifs de performances mesurables spécifiques pour vos applications peuvent être notamment :

  • L’utilisation maximale de la mémoire au niveau ou au-dessous d’un pourcentage d’UC et de mémoire en mégaoctets à tout moment.
  • Quand l’utilisateur n’utilise pas l’application, les pourcentages disque et d’UC sont à zéro.

Réduire la consommation de la batterie

La plupart du temps, vos actions pour optimiser les performances se traduiront naturellement par une diminution de l’énergie consommée par votre application. Le processeur est un gros consommateur de batterie sur les appareils, même en mode de faible consommation d’énergie. Windows 8 essaie de maintenir le processeur dans un état de faible consommation d’énergie lorsqu’il est inactif, et l’active à chaque planification de tâche. Vous pouvez réduire encore plus la consommation de la batterie de votre application. Pour cela, vous devez faire en sorte que l’application ne comporte pas de minuteurs qui planifient inutilement des tâches sur le processeur lorsqu’il est inactif. Par exemple, une application peut avoir besoin de collecter des données à partir de services Web et de capteurs, comme le système de localisation GPS. Prenez en compte le niveau de consommation de la batterie pour déterminer la fréquence de collecte des données.

C’est également un élément important dont vous devez tenir compte pour les animations dont l’affichage doit en permanence être mis à jour et pour maintenir actifs le processeur et les transformations graphiques. Les animations peuvent être utiles pour rendre l’expérience utilisateur plus agréable, mais utilisez-les à bon escient. Ceci est particulièrement important pour les applications pilotées par les données, dans lesquelles l’utilisateur peut simplement afficher du contenu, sans interagir avec ce dernier. C’est le cas, par exemple, d’un utilisateur qui regarde du contenu dans un lecteur de news ou une visionneuse de photos sans interagir avec l’application. Par ailleurs, il est inutile d’ancrer des animations dans l’application si l’utilisateur n’y porte pas d’intérêt.

Les applications se connectent généralement à des services Web pour obtenir de nouvelles informations et les présenter à l’utilisateur. En réduisant la fréquence à laquelle votre application recherche et collecte les nouvelles informations, vous consommez moins de batterie.

Réduire la consommation de la mémoire

Réduire la mémoire contribue à éviter les ralentissements, ce qui est particulièrement important dans les applications du Windows Store à cause de leur système de gestion de la durée de vie des processus (PLM). Le système PLM détermine quelles applications doivent être arrêtées en partie selon leur encombrement en mémoire. En veillant à ce que l’encombrement de votre application dans la mémoire reste faible, vous limitez le risque qu’elle soit arrêtée lorsqu’elle n’est pas utilisée. Par exemple, vous pouvez réduire l’encombrement de votre application dans la mémoire en libérant les ressources non nécessaires, telles que les images, lors de la suspension de l’application.

Le système PLM peut aussi choisir de permuter votre application vers le disque, puis de replacer l’application en mémoire dès que l’utilisateur revient dedans. Si vous réduisez l’encombrement en mémoire de votre application, celle-ci reprend plus vite après une suspension.

Une fois vos objectifs de performances définis, vous pouvez les utiliser pour influencer la conception de votre application.

Concevoir des applications performantes

Lors de la conception de votre application, les performances doivent être au centre de votre réflexion. En utilisant notre exemple d’application de cuisine et restauration, quand l’utilisateur a atteint la page des recettes, vous pouvez utiliser la virtualisation comme technique pour charger plus rapidement la liste des ingrédients de base sans afficher d’images associées pour le moment. Voici quelques éléments à prendre en compte.

Plusieurs pages de contenu

Pour afficher plusieurs pages de contenu, les techniques de conception et de codage pour les performances sont notamment :

  • L’utilisation de la virtualisation pour les listes et les grilles, avec des éléments de taille fixe, quand cela est possible. Pour plus d’informations, voir Utilisation de la virtualisation avec une liste ou une grille.
  • Développez des applications pour que seule la première page de l’interface utilisateur soit réactive. Ne chargez pas l’interface utilisateur tant que l’utilisateur n’en a pas besoin.
  • Planifiez une exécution ultérieure du travail non prioritaire. Pour plus d’informations, pour les applications du Windows Store en JavaScript, voir l’espace de noms WinJS.Utilities.Scheduler et l’exemple Planificateur HTML. Pour les applications du Windows Store en C++, C#, ou Visual Basic, voir Programmation asynchrone, la propriété Dispatcher, la classe CoreDispatcher et l’exemple Plusieurs vues.
  • Réduisez le contenu tant que l’utilisateur n’en a pas besoin. Pour plus d’informations, pour les applications du Windows Store en JavaScript, voir la propriété display pour display:none. Pour les applications du Windows Store en C++, C# ou Visual Basic, voir la propriété Visibility pour Collapsed.

Richesse des effets visuels et des fonctionnalités

Pour afficher des effets visuels et des fonctionnalités riches, les techniques de conception et de codage pour les performances sont notamment :

  • Retardez le plus possible le chargement de l’interface utilisateur et du code.
  • Utilisez une interface utilisateur sans code —des parties importantes de contenu HTML ou XAML (Extensible Application Markup Language) codé en dur que le runtime peut charger dans des lots—chaque fois que possible.
  • Identifiez des fonctionnalités distinctes pour votre application et chargez le minimum d’éléments chaque fois que possible.
  • Affichez des parties de l’interface utilisateur aux utilisateurs en plusieurs étapes.
  • Les images doivent être chargées à une taille appropriée à la vue dans laquelle vous les présentez, à l’aide de la méthode GetThumbnailAsync.
  • Pour les animations dans les applications du Windows Store en JavaScript, utilisez les animations CSS (Cascading Style Sheets), l’espace de noms WinJS.UI.Animation, ou les deux. Voir également l’exemple de bibliothèque d’animations HTML.
  • Pour les applications du Windows Store en JavaScript, placez les composants d’interface utilisateur en HTML et CSS, en évitant une disposition inline, telle que les propriétés offsetWidth et offsetHeight.
  • Pour les applications du Windows Store en C++, C#, ou Visual Basic, utilisez les animations et les transitions de thème XAML. Pour plus d’informations, voir Animations rapides et fluides dans votre application du Windows Store et l’exemple d’animations de caractéristiques XAML.

Contenu dynamique

Pour afficher du contenu dynamique, les techniques de conception et de codage pour les performances sont notamment :

  • Identifiez les objectifs d’actualisation du contenu. Par exemple, est-ce que le contenu doit être actualisé toutes les secondes ? Est-ce que le contenu doit être actualisé toutes les minutes, toutes les heures ou une fois par jour ?
  • Mettez en cache le contenu lorsque cela est possible. Pour plus d’informations, voir :
  • Quand la mise en cache du contenu n’est pas possible, affichez une interface utilisateur réactive aussi rapidement que possible—une interface utilisateur que les utilisateurs peuvent parcourir, mais qui indique à l’utilisateur que l’application essaie toujours de charger du contenu.
  • Passez du contenu mis en cache au contenu en direct d’une façon qui ne soit pas déplaisante pour l’utilisateur. Par exemple, l’application ne modifie pas la position du contenu sous le doigt de l’utilisateur quand elle charge le contenu en direct.
  • Prérécupérez le contenu. Pour plus d’informations, voir :

Lancement d’une application

Pour lancer les applications, les techniques de conception et de codage pour les performances sont notamment :

Reprise d’une application

Pour reprendre les applications, les techniques de conception et de codage pour les performances sont notamment :

  • Passez progressivement du contenu mis en cache au contenu en direct d’une façon qui ne soit pas déplaisante pour l’utilisateur. Par exemple, l’application ne modifie pas la position du contenu sous le doigt de l’utilisateur quand elle charge le contenu en direct.
  • Ne relancez pas l’application et ne réanimez pas le contenu.
  • Une utilisation de la mémoire plus élevée se traduit par des reprises d’application plus lentes. Gérez la mémoire de votre application de la façon suivante :
    • Réduisez la plage de travail de votre code.
    • Évitez les fuites de mémoire en désinscrivant les gestionnaires d’événements et en déréférençant les éléments visuels quand cela est possible.
    • Pour les applications du Windows Store en JavaScript, utilisez la méthode createObjectUrl et la propriété oneTimeOnly.
    • Si possible, évitez de créer des applications hybrides qui utilisent à la fois HTML/JavaScript et XAML afin de limiter les références circulaires.

Redimensionnement et rotation d’application

Pour le redimensionnement et la rotation des applications, les techniques de conception et de codage pour les performances sont notamment :

  • Pour les applications du Windows Store en C++, C# ou Visual Basic, utilisez la classe VisualStateManager.
  • Pour les applications du Windows Store en JavaScript, utilisez autant que possible HTML/CSS à la place de JavaScript.
  • Effectuez uniquement les tâches requises immédiatement, en différant les tâches d’application intensives pour plus tard—votre application dispose de 200 à 800 millisecondes pour effectuer les tâches avant que l’interface utilisateur de votre application n’apparaisse rognée pour l’utilisateur.

Contenu de mouvement panoramique

Pour effectuer un mouvement panoramique sur le contenu, les techniques de conception et de codage pour les performances sont notamment :

  • Planifiez 3 à 6 pages par seconde de mouvement panoramique utilisateur.
  • Virtualisez les grandes quantités d’éléments. Pour plus d’informations, voir Utilisation de la virtualisation avec une liste ou une grille.
  • Utilisez les modèles de projet avec le moins d’éléments possible.
  • Affichez le contenu par phases.

Notez que, à mesure que vous avancez, vous pouvez découvrir qu’il existe d’autres considérations en matière de conception liées aux performances générales qui ne correspondent à aucun de ces scénarios sur les performances. Par exemple, que se passe-t-il si l’appareil a une connexion sans fil intermittente, utilise une connexion d’accès à distance plus lente ou n’a pas de connexion Internet ? Dans notre exemple d’application de cuisine et restauration, il est possible de mettre en cache les images une fois qu’elles ont été téléchargées. Pour connaître d’autres techniques, voir Données d’utilisation de connexion.

Une fois la conception liée aux performances en place, vous pouvez commencer à coder votre application.

Instrumenter des applications performantes

Lorsque vous développez le code de votre application, vous pouvez ajouter du code qui enregistre les messages et les événements à différents moments lors de l’exécution de votre application. Ensuite, lors du test de votre application, vous pouvez utiliser des outils tels que l’Enregistreur de performance Windows et l’Analyseur de performance Windows (inclus dans le Windows Performance Toolkit) pour créer et afficher un rapport sur les performances de votre application. Dans ce rapport, vous pouvez rechercher ces messages et événements qui vous permettent une meilleure analyse des résultats du rapport.

Le Windows Runtime fournit des API d’enregistrement, basées sur le Suivi des événements pour Windows (ETW), qui proposent un enregistrement détaillé et une solution de suivi complète pour les applications du Windows Store. Ces API, qui font partie de l’espace de noms Windows.Foundation.Diagnostics, comprennent les classes FileLoggingSession, LoggingActivity, LoggingChannel, et LoggingSession.

Pour enregistrer un message dans le rapport à un point spécifique de l’exécution de l’application, créez un objet LoggingChannel, puis appelez la méthode LogMessage de l’objet, ainsi.



// using Windows.Foundation.Diagnostics;
// ...

LoggingChannel myLoggingChannel = new LoggingChannel("MyLoggingChannel");

myLoggingChannel.LogMessage(LoggingLevel.Information, "Here's my logged message.");

// ...


Pour enregistrer les événements de démarrage et d’arrêt dans le rapport pendant une durée donnée pendant l’exécution de l’application, créez un objet LoggingActivity, puis appelez le constructeur LoggingActivity de l’objet, ainsi.



// using Windows.Foundation.Diagnostics;
// ...

LoggingActivity myLoggingActivity;

// myLoggingChannel is defined and initialized in the previous code example.
using (myLoggingActivity = new LoggingActivity("MyLoggingActivity"), myLoggingChannel))
{   // After this logging activity starts, a start event is logged.
    
    // Add code here to do something of interest.
    
}   // After this logging activity ends, an end event is logged.

// ...


Pour d’autres exemples, consultez l’ exemple LoggingSession et l’exemple FileLoggingSession.

Après avoir instrumenté le code de votre application, vous pouvez tester et mesurer les performances de l’application.

Tester et mesurer les performances par rapport aux objectifs

Après avoir instrumenté votre application, utilisez les techniques et les outils suivants pour tester les performances de l’application par rapport aux objectifs définis :

  • Effectuez des tests sur différentes configurations matérielles, notamment des PC de bureau et tout-en-un, des ordinateurs portables et ultraportables, et des tablettes.
  • Effectuez des tests sur des écrans de différentes tailles. Notez que, alors que des tailles d’écran plus larges permettent d’afficher beaucoup plus de contenu, tout ce contenu supplémentaire peut avoir un impact négatif sur les performances.
  • Supprimez le plus de variables de test aléatoires possible. Par exemple :
    • Désactivez les applications d’arrière-plan sur l’appareil de test. Pour ce faire, dans Windows, sélectionnez l’icône Paramètres > Modifier les paramètres du PC > PC et périphériques. Sélectionnez chaque application active dans la zone Applications de l’écran de verrouillage, puis Ne pas afficher d’état rapide ici.
    • Créez des images en code natif sur l’appareil de test pour les applications du Windows Store conçues pour Windows en C# ou Visual Basic. Pour ce faire, dans Windows, sur le Bureau, ouvrez Centre de maintenance. Dans la zone Maintenance, sous Maintenance automatique, sélectionnez Commencer la maintenance.
    • Exécutez l’application plusieurs fois pour mieux éliminer les variables de test aléatoires et garantir des mesures cohérentes.
  • Testez la consommation réduite de la batterie. Lorsque vous créez une application, tenez compte du fait que les ordinateurs dont disposent les utilisateurs peuvent être beaucoup moins puissants que ceux utilisés dans votre environnement de développement. Windows 8 a été conçu pour fonctionner de manière optimale avec des appareils à faible consommation, telles que les tablettes. Par ailleurs, Windows RT applique ces mêmes principes de conception pour tirer parti des caractéristiques de faible consommation des plateformes ARM. Les applications du Windows Store doivent également être conçues de manière à fonctionner correctement sur ce type d’appareil. N’oubliez pas que certaines opérations qui s’exécutent rapidement sur votre ordinateur de développement peuvent être beaucoup plus lentes sur un périphérique moins puissant, ce qui nuit à l’expérience utilisateur. Pour bien définir vos objectifs, gardez à l’esprit qu’un périphérique à faible consommation d’énergie est environ 4 fois plus lent qu’un ordinateur de bureau.
  • Utilisez plusieurs ensembles d’outils, tels que Microsoft Visual Studio et l’Analyseur de performance Windows pour mesurer les performances de l’application. Visual Studio est conçu pour fournir des analyses sur l’application, par exemple les liaisons de code source. L’Analyseur de performance Windows est conçu pour fournir des analyses sur le système, par exemple des informations sur le système, des informations sur les événements de manipulation tactile, des informations sur les entrées/sorties disque et les coûts GPU. Ces deux outils permettent de capturer et d’exporter les résultats, et peuvent rouvrir des suivis post-mortem et partagés.
  • Avant de soumettre votre application sur le Windows Store pour certification, incorporez dans vos plans de test les tests liés aux performances décrits dans la section « Tests de performances » des tests du Kit de certification des applications Windows et dans la section « Performances et stabilité » des cas de test des applications du Windows Store.

Itérer et améliorer la conception de l’application en fonction des résultats des tests de performances

Après avoir analysé les résultats des tests de performances, déterminez si des modifications sont nécessaires, par exemple :

  • Les objectifs de performances doivent-ils être modifiés ?
  • Les décisions de conception prises doivent-elles être modifiées ?
  • L’instrumentation dans le code doit-elle être modifiée, supprimée ou ajoutée ?

Si des modifications sont nécessaires, retournez au début de ce processus et recommencez.

Rubriques associées

Planifier votre application
Performances (applications du Windows Store)
Meilleures pratiques générales en matière de performances
Meilleures pratiques en matière de performances pour les applications du Windows Store en JavaScript
Meilleures pratiques pour les performances des applications du Windows Store en C++, C# ou Visual Basic

 

 

Afficher:
© 2014 Microsoft