Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les utilisateurs s’attendent à ce que leurs applications restent réactives, à se sentir naturelles et à ne pas vider leur batterie. Techniquement, les performances sont une exigence non fonctionnelle, mais le traitement des performances en tant que fonctionnalité vous aide à répondre aux attentes de vos utilisateurs. Spécifiez les objectifs et mesurez les résultats : il s’agit de facteurs clés. Déterminez vos scénarios critiques en matière de performances, définissez ce que signifient les bonnes performances, puis mesurez-les rapidement et souvent tout au long du cycle de vie de votre projet pour vous assurer que vous atteindrez vos objectifs.
Spécifier des objectifs
L’expérience utilisateur est un moyen de base de définir de bonnes performances. Le temps de démarrage d’une application peut influencer la perception de ses performances par l’utilisateur. Un utilisateur peut considérer un temps de lancement d’une application de moins d’une seconde comme excellent, de moins de cinq secondes comme bon, et de plus de cinq secondes comme médiocre.
D’autres métriques ont un impact moins évident sur l’expérience utilisateur, comme la mémoire. La probabilité qu’une application soit arrêtée lorsqu’elle est suspendue ou inactive augmente avec la quantité de mémoire utilisée par l’application active. L’utilisation élevée de la mémoire dégrade l’expérience de toutes les applications sur le système, de sorte qu’il est raisonnable d’avoir un objectif de consommation de mémoire.
Définissez les objectifs initiaux qui sont spécifiques et mesurables. Ils doivent se trouver dans trois catégories :
- Temps : durée pendant laquelle les utilisateurs ou l’application doivent effectuer des tâches
- Fluidité : taux et continuité avec lesquels l’application se redessine en réponse à l’interaction utilisateur
- Efficacité : comment l’application conserve les ressources système, y compris l’alimentation de la batterie
Heure
Pensez à des plages acceptables de temps écoulé (classes d’interaction) pour que les utilisateurs effectuent leurs tâches.
| Classe d’interaction | Perception de l’utilisateur | Idéal | Maximale | Exemples |
|---|---|---|---|---|
| Rapide | Délai minimalement visible | 100 ms | 200 ms | Affichez la barre d’application ; Appuyez sur un bouton (première réponse) |
| Typique | Rapide, mais pas rapide | 300 ms | 500 ms | Redimensionner; zoom sémantique |
| Réactive | Pas rapide, mais semble réactif. | 500 ms | 1 seconde | Accédez à une autre page ; reprendre l’application |
| Lancer | Expérience concurrentielle | 1 seconde | 3 secondes | Lancer l’application pour la première fois |
| Continué | Ne se sent plus réactif | 500 ms | 5 secondes | Télécharger un fichier à partir d’Internet |
| Captif | Long ; l’utilisateur peut quitter la page | 500 ms | 10 secondes | Installer plusieurs applications à partir du Windows Store |
Affectez des classes d’interaction aux scénarios de performances de votre application. Pour chaque scénario, affectez la référence point-in-time de l’application, une partie de l’expérience utilisateur et une classe d’interaction.
Fluidité
Des objectifs de fluidité mesurables spécifiques pour votre application peuvent inclure :
- Aucun redessinage d’écran stop-and-starts (glitches)
- Les animations s’affichent à 60 images par seconde (FPS)
- Lorsqu’un utilisateur effectue un panoramique ou un défilement, l’application présente 3 à 6 pages de contenu par seconde
Rendement
Des objectifs d’efficacité mesurables spécifiques pour votre application peuvent inclure :
- Le pourcentage d’utilisation du processeur de votre application est toujours égal ou inférieur à une valeur cible, et l’utilisation de la mémoire en Mo est toujours égale ou inférieure à une valeur cible
- Lorsque l’application est inactive, l’utilisation du processeur et de la mémoire est minimale
- Votre application peut être utilisée activement pour un nombre cible d’heures sur l’alimentation de la batterie
Concevoir votre application pour les performances
Utilisez vos objectifs de performances pour influencer la conception de votre application. Tenez compte des aspects suivants :
Interface Utilisateur (UI)
- Optimisez l’analyse et l’efficacité du temps de chargement et de la mémoire pour chaque page en optimisant votre balisage XAML. Différer le chargement de l’interface utilisateur et du code jusqu’à ce qu’il soit nécessaire.
- Pour
ListViewetGridView, faites de tous les éléments la même taille et utilisez autant de techniques d’optimisation que vous pouvez. - Déclarez l’interface utilisateur dans le balisage plutôt que de la construire impérativement dans le code.
- Retardez la création d’éléments d’interface utilisateur jusqu’à ce que l’utilisateur en a besoin à l’aide de l’attribut x :Load .
- Préférez les transitions de thème et les animations aux animations définies dans un storyboard. Les animations définies dans un storyboard nécessitent des actualisations constantes de l’écran et maintiennent le processeur et le pipeline graphique actifs.
- Chargez des images à une taille appropriée pour la vue dans laquelle vous les présentez.
Processeur, mémoire et puissance
- Programmez les tâches de faible priorité sur des fils d’exécution de faible priorité. Consultez la programmation asynchrone et la classe DispatcherQueue .
- Réduisez l’empreinte mémoire de votre application en libérant des ressources coûteuses (telles que des supports) lorsqu’elles ne sont pas nécessaires.
- Évitez les fuites de mémoire en annulant l’inscription des gestionnaires d’événements et en déreferencant les éléments d’interface utilisateur dans la mesure du possible.
- Pour améliorer l’efficacité de la batterie, soyez prudent avec la fréquence à laquelle vous interrogez des données, interrogez un capteur ou planifiez le travail sur le processeur lorsqu’il est inactif.
Accès aux données
- Si possible, préchargez le contenu.
- Mettre en cache du contenu coûteux à accéder.
- Pour les défauts de cache, affichez aussi rapidement que possible une interface utilisateur provisoire indiquant que l’application est toujours en train de charger du contenu.
Outil de performance
À mesure que vous codez, ajoutez du code qui journalise les messages et les événements à certains points pendant l’exécution de votre application. Plus tard, utilisez des outils de profilage tels que Windows Enregistreur de performances et Windows Analyseur de performances (inclus dans le Windows Performance Toolkit) pour créer et afficher un rapport sur les performances de votre application.
Windows fournit des API de journalisation soutenues par le suivi d’événements pour Windows (ETW) qui offrent une solution de journalisation et de suivi d’événements enrichie. Les API de l’espace de noms Windows.Foundation.Diagnostics incluent les classes FileLoggingSession, LoggingActivity, LoggingChannel et LoggingSession.
// using Windows.Foundation.Diagnostics;
LoggingChannel myLoggingChannel = new LoggingChannel("MyLoggingChannel");
myLoggingChannel.LogMessage("Here's my logged message.", LoggingLevel.Information);
Pour journaliser les événements de démarrage et d’arrêt sur une période de temps :
LoggingChannel myLoggingChannel = new LoggingChannel("MyLoggingChannel");
LoggingActivity myLoggingActivity;
using (myLoggingActivity = new LoggingActivity("MyLoggingActivity", myLoggingChannel))
{
// A start event is logged when the activity begins.
// Add code here to do something of interest.
}
// An end event is logged when the activity ends.
Tester et mesurer par rapport aux objectifs de performances
Utilisez ces techniques et outils pour tester la façon dont votre application s’empile sur vos objectifs de performances :
- Testez sur une grande variété de configurations matérielles, notamment les ordinateurs de bureau, les ordinateurs portables, les ultrabooks et les tablettes.
- Testez sur une grande variété de tailles d’écran. Les écrans plus larges affichent davantage de contenu, ce qui peut avoir un impact négatif sur les performances.
- Éliminez autant de variables de test que vous pouvez :
- Désactivez les applications en arrière-plan sur l’appareil de test.
- Générez votre application dans la configuration Release avant de la déployer sur l’appareil de test.
- Exécutez l’application plusieurs fois pour éliminer les variables de test aléatoire et garantir des mesures cohérentes.
- Testez la disponibilité réduite de l’alimentation. Les appareils des utilisateurs peuvent avoir beaucoup moins de puissance que votre ordinateur de développement.
- Utilisez une combinaison d’outils tels que Visual Studio outils de diagnostic et Windows Analyseur de performances pour mesurer les performances des applications.
Répondre aux résultats des tests de performances
Après avoir analysé les résultats de vos tests de performances, déterminez si des modifications sont nécessaires :
- Devez-vous modifier vos décisions de conception d’application ou optimiser votre code ?
- Devez-vous ajouter, supprimer ou modifier l’instrumentation dans le code ?
- Devez-vous réviser vos objectifs de performance ?
Si des modifications sont nécessaires, faites-les et revenez à l’instrumentation ou au test.
Optimize
Optimisez uniquement les chemins de code critiques pour les performances de votre application , ceux où le plus de temps est passé. Le profilage vous indique quelles zones il s’agit. Souvent, il existe un compromis entre les bonnes pratiques de conception et le code qui s’effectue au niveau de l’optimisation la plus élevée. Hiérarchiser la productivité des développeurs et une bonne conception logicielle dans les domaines où les performances ne sont pas un problème.
Contenu connexe
Windows developer