Partager via


WPF Performance Suite

Le Kit de développement logiciel Windows comprend une suite d'outils de profilage des performances pour les applications Windows Presentation Foundation (WPF), appelée WPF Performance Suite. WPF Performance Suite permet d'analyser le comportement au moment de l'exécution de vos applications WPF et de déterminer les optimisations des performances que vous pouvez appliquer. Il comprend des outils de profilage des performances appelés Perforator et Visual Profiler. Cette rubrique décrit comment installer et utiliser les outils Perforator et Visual Profiler dans WPF Performance Suite.

Cette rubrique contient les sections suivantes :

  • Installation de WPF Performance Suite

  • Démarrage de WPF Performance Suite

  • Perforator

  • Visual Profiler

Installation de WPF Performance Suite

Les étapes suivantes décrivent comment installer WPF Performance Suite.

  1. Si une version antérieure de Windows Performance Toolkit est installée, désinstallez-la.

  2. Installez le Kit de développement logiciel (SDK) Windows.

    Dans les options d'installation, assurez-vous de sélectionner l'option Windows Performance Toolkit sous Common Utilities. Pour plus d'informations sur le téléchargement, consultez la page relative au téléchargement du Kit de développement logiciel Windows.

  3. Une fois que le Kit de développement logiciel Windows est installé, dans le menu Démarrer, sélectionnez Tous les programmes, Microsoft Windows SDK v7.1, puis Outils.

  4. Sous Outils, cliquez sur Install Windows Performance Tool Kit.

    L'Assistant Installation s'affiche.

  5. Suivez les instructions qui s'affichent pour installer Windows Performance Toolkit.

    Par défaut, les fonctionnalités suivantes sont installées.

    • Analyseur de performances

    • Aide de Windows Performance Toolkit

    • GPUView

    • WPF Performance Suite

Démarrage de WPF Performance Suite

Vous devez démarrer WPF Performance Suite avant d'exécuter l'application que vous souhaitez profiler. Pour utiliser WPF Performance Suite, votre compte d'utilisateur doit posséder des privilèges d'administrateur.

Les étapes suivantes décrivent comment démarrer WPF Performance Suite.

  1. Dans le menu Démarrer, sélectionnez Tous les programmes, puisMicrosoft Windows Performance Toolkit.

  2. Cliquez sur WPF Performance Suite.

  3. Si une boîte de dialogue Contrôle de compte d'utilisateur s'affiche, cliquez sur Oui.

    WPF Performance Suite démarre.

La première fois que vous démarrez WPF Performance Suite, la boîte de dialogue Add Tools apparaît. La boîte de dialogue Add Tools permet d'ajouter des outils de profilage des performances. Pour ajouter un outil, sélectionnez un assembly qui contient un outil, puis cliquez sur Scan Assembly. Vous pouvez ouvrir la boîte de dialogue Add Tools à tout moment en cliquant sur Add Tool dans le menu Fichier. L'illustration suivante montre la boîte de dialogue Add Tools.

Boîte de dialogue Add Tools

Boîte de dialogue Ajouter des outils

Par défaut, WPF Performance Suite comprend les outils de profilage de performances suivants.

Outil

Description

Perforator

Analyse le comportement de rendu.

Visual Profiler

Profile l'utilisation des services WPF, telle que la disposition et la gestion des événements par éléments dans l'arborescence d'éléments visuels.

Vérifiez que les cases à cocher Perforator et Visual Profiler sont activées, puis cliquez sur OK.

Perforator

Perforator est un outil de profilage des performances qui permet d'analyser le comportement de rendu de votre application WPF. L'interface utilisateur Perforator affiche un ensemble de graphiques qui vous permettent d'analyser un comportement de rendu très spécifique de certaines parties de votre application, telles que la fréquence d'ajout de rectangles modifiés et la fréquence d'images. WPF utilise une technique de rendu appelée rectangle modifié, ce qui signifie que seules les parties de l'écran qui ont été changées sont affichées sur une nouvelle passe de rendu. En outre, Perforator dispose de plusieurs options que vous pouvez utiliser pour récupérer des problèmes de rendu spécifiques. Perforator présente également les cibles de rendu logicielles et un curseur pour contrôler la durée des graphiques. L'illustration suivante montre l'interface utilisateur Perforator.

Interface utilisateur Perforator

Boîte de dialogue Ajouter un outil

Utilisation de Perforator

Pour utiliser Perforator, démarrez l'application WPF que vous souhaitez analyser. Une fois que l'application a démarré, cliquez sur l'onglet Perforator, cliquez sur le menu Actions, puis sur Select Process. Dans la boîte de dialogue Select Process, sélectionnez le processus d'application que vous souhaitez analyser, puis cliquez sur Select. Le nom et l'ID du processus devraient alors apparaître dans la partie supérieure de l'onglet Perforator. Sélectionnez les options de rendu que vous souhaitez analyser. Les valeurs de données Perforator, telles que la fréquence d'images, reflètent immédiatement le comportement de rendu de l'application. L'illustration suivante montre un exemple.

Perforator avec l'application et les options de rendu sélectionnées

Fenêtre principale Perforateur avec options sélectionnées

Graphiques Perforator

Il est important que la fréquence d'images, la fréquence d'ajout de rectangles modifiés et le nombre de cibles de rendu intermédiaires restent bas pour que votre application WPF s'affiche correctement. Perforator comporte plusieurs graphiques utiles qui permettent de surveiller ces niveaux.

Le tableau suivant décrit les mesures signalées par chaque graphique.

Graphique

Description

Remarques

Fréquence d'images

Indique la fréquence à laquelle l'application s'affiche à l'écran.

Pour les applications sans animation, cette valeur doit être proche de 0. Pendant l'exécution des animations d'une application fonctionnant correctement, la fréquence d'images doit être proche de la fréquence d'actualisation du moniteur (en général 60 ou 75).

Fréquence d'ajout de rectangles modifiés

Indique le nombre de régions rectangulaires que WPF doit mettre à jour pour chaque image.

Le rectangle modifié fait référence à une technique de rendu où seules les parties de l'écran qui ont été modifiées sont réaffichées. Une valeur élevée indique que de nombreuses régions sont modifiées. Cela n'est pas nécessairement mauvais, mais il s'agit d'une valeur à prendre en compte par rapport aux performances globales de votre application.

Cibles de rendu logicielles intermédiaires par image

Indique le nombre de cibles de rendu logicielles intermédiaires nécessaires pour afficher une image de l'application.

Les cibles de rendu intermédiaires sont des surfaces logicielles coûteuses vers et à partir desquelles WPF doit allouer et copier des données. Les cibles de rendu logicielles intermédiaires sont plus coûteuses que les cibles de rendu matérielles intermédiaires.

Les cibles de rendu intermédiaires sont généralement provoquées par l'utilisation de la propriété DrawingBrush, VisualBrush, Opacity sur Visual ou de modes de mosaïque sur TileBrush. Si ce nombre est élevé (par exemple, supérieur à 5), il indique que le temps d'exécution de WPF effectue une grande quantité de travail pour afficher votre application.

Sur un ordinateur qui prend en charge l'accélération matérielle, ce nombre doit être de 0. Sinon, ce nombre indique qu'une partie de votre scène est affichée à l'aide du pipeline logiciel le plus lent.

Cibles de rendu matérielles intermédiaires par image

Indique le nombre de cibles de rendu matérielles intermédiaires nécessaires pour afficher une image de l'application.

Les cibles de rendu intermédiaires sont des surfaces matérielles coûteuses vers et à partir desquelles WPF doit allouer et copier des données.

Les cibles de rendu intermédiaires sont généralement provoquées par l'utilisation de la propriété DrawingBrush, VisualBrush ou Opacity sur Visual ou de modes de mosaïque sur TileBrush. Si ce nombre est élevé (par exemple, supérieur à 5), il indique que le temps d'exécution de WPF effectue une grande quantité de travail pour afficher votre application. Dans ce cas, vous devez analyser toutes les zones de votre code qui utilisent les éléments mentionnés précédemment.

Les cibles de rendu matérielles intermédiaires sont moins coûteuses que les cibles de rendu logicielles intermédiaires.

Utilisation de la mémoire vidéo

Détecte les importantes allocations de mémoire vidéo à WPF pour la texture et les cibles de rendu. Cette mesure ne détecte pas les allocations de mémoire au pilote vidéo ou les allocations de mémoire pour la compilation et le chargement des nuanceurs de pixel et de sommet.

Un dépassement de la quantité disponible de mémoire de texture aura généralement comme conséquence le recours de la logique de rendu WPF à la mémoire logicielle, et le fait que plusieurs affichages (plusieurs écrans) auront un effet multiplicateur sur la quantité de mémoire vidéo requise pour une application.

Options de rendu et rendu d'optimisation Perforator

Perforator permet de définir un grand nombre d'options de rendu qui influencent le comportement de rendu de l'application en temps réel. Définissez ces options pour voir les événements de rendu susceptibles de poser problème dans votre application. Ces options se trouvent dans la partie inférieure de l'interface utilisateur.

L'illustration suivante montre les options de rendu Perforator.

Options de rendu Perforator

Options de rendu de Perforateur

En général, pour améliorer les performances de vos applications WPF, vous devez réduire le rendu logiciel et abaisser le nombre de cibles de rendu intermédiaires. Les sections suivantes expliquent comment Perforator peut vous aider à effectuer ces opérations.

Comment éviter le rendu logiciel

Étant donné que le pipeline de rendu matériel WPF est nettement plus rapide que son pipeline de rendu logiciel, moins l'interface utilisateur de l'application est rendue par le logiciel, plus le rendu dans cette application est rapide. En général, le temps nécessaire pour afficher une zone dans le logiciel est proportionnel au nombre de pixels affichés. Par conséquent, faites attention aux larges zones affichées à l'aide du pipeline logiciel. Les petites zones posent moins de problèmes.

Le tableau suivant répertorie les options Perforator qui peuvent vous aider à détecter les problèmes de rendu logiciel.

Option

Description

Remarques

Draw software rendering with purple tint

Trace toutes les zones rendues à l'aide du pipeline de rendu logiciel en violet. Cela inclut les cibles de rendu logicielles, le contenu 3D logiciel et le recours logiciel par primitive.

Le pipeline de rendu matériel WPF est nettement plus rapide que le pipeline de rendu logiciel. Une trop grande quantité de rendu logiciel indique généralement un problème. Par exemple, les causes pouvant induire ce comportement incluent une disposition en mosaïque trop importante de Brush ou le dépassement de la taille de texture de la carte vidéo.

Draw software rendered bitmap effects with red tint

Trace les effets bitmaps de rendu logiciel hérités en rouge.

Les classes BitmapEffect rendues par logiciel sont lentes et doivent être évitées. Vous devez utiliser les classes Effect rendues par le matériel qui ont été introduites dans .NET Framework 3.5 SP1.

L'illustration suivante montre l'exemple d'application PhotoDemo avec l'option de rendu Draw software rendering with purple tint activée.

PhotoDemo avec la teinte violette

App de démo photo montrant les options de rendu perforateur

Surveillance des zones obsolescentes

Étant donné que WPF met à jour uniquement les parties d'une fenêtre selon les besoins, il peut être utile de visualiser les mises à jour à tout moment. Dans certains cas, bien qu'aucune animation n'ait lieu dans l'application, les zone continuent à être mise à jour. Les options ci-dessous aident à visualiser les comportements de mise à jour. Les mises à jour inutiles sont particulièrement importantes dans le Bureau à distance, les ordinateurs virtuels et les scénarios similaires lorsque WPF doit envoyer de nouvelles images bitmaps sur le réseau. En outre, les mises à jour inutiles peuvent affecter l'autonomie des batteries de vos ordinateurs portables.

Option

Description

Remarques

Show dirty-region update overlay

Permet d'indiquer chaque mise à jour effectuée par WPF à l'écran en la recoloriant. Cela permet de voir où et quand des zones sont redessinées dans une application.

Comme WPF met à jour seulement les parties de la fenêtre selon les besoins, il peut être utile de visualiser quelle proportion de la fenêtre est mise à jour à tout moment. Utilisez cette option lorsque la fréquence d'images et la fréquence d'ajout de rectangles modifiés ne sont pas égales à zéro, mais qu'aucun visuel ne change dans votre application.

Disable dirty region support

Indique à WPF de redessiner la fenêtre entière chaque fois qu'une modification est effectuée.

Cette option est utile pour forcer la mise à jour de la fenêtre entière. Normalement, seule la partie de la fenêtre qui a changé est redessinée. La sélection de cette option ralentit considérablement le rendu de votre application.

Clear back-buffer before rendering

Efface les fenêtres d'application avant chaque opération de dessin.

Cette option est une alternative à Show dirty-region update overlay. Elle indique clairement la zone obsolescente la plus récente alors que le chevauchement de mise à jour de zones obsolescentes est plus utile pour voir les modifications de la zone obsolescente dans le temps.

Détection d'autres sources de dégradation des performances

Perforator permet de désactiver certaines opérations exigeantes en performances pour déterminer si elles provoquent des goulots d'étranglement dans votre application. En surveillant la fréquence d'images des d'applications et en sélectionnant ces options individuellement, vous pouvez déterminer si des opérations, telles que le rendu 3D ou la remise à l'échelle des images, entraînent des problèmes de rendu. Si vous choisissez l'une de ces options et que la fréquence d'images chute considérablement, vous avez probablement identifié le goulot d'étranglement dans votre application.

Option

Description

Remarques

Disable Opacity Effects

Désactive certaines utilisations de l'opacité pouvant être exigeantes en performances.

Pour éviter globalement ce problème de performances, pensez à définir l'opacité sur un objet de bas niveau, tel que Brush, et non pas sur un objet de haut niveau, tel que Button.

Disable per-primitive software fallback

Désactive le recours à la mémoire logicielle pour les primitives de rendu individuelles. Il est impossible de désactiver les cibles de rendu logicielles intermédiaires et tout autre rendu logiciel.

Dans la plupart des cas, cette option n'est pas requise. Ne l'activez pas.

Disable high-quality image rescaling

Désactive la remise à l'échelle d'images de grande taille en images de plus petite taille.

Permet de voir l'effet de la remise à l'échelle de l'image dans votre application. Si l'activation de cette option fait chuter la fréquence d'images, envisagez de décoder vos images à une taille proche de leur taille d'affichage.

Disable 3D rendering

Désactive toutes les opérations de rendu 3D.

Permet de voir les effets des opérations de rendu 3D dans votre application.

Visual Profiler

Visual Profiler est un outil de profilage des performances des services WPF, tels que la disposition, le rendu et l'animation, pour des éléments de l'arborescence d'éléments visuels. En analysant la sortie de profilage de cet outil, vous pouvez déterminer quels éléments visuels dans votre application peuvent provoquer des goulots d'étranglement de performances.

Visual Profiler présente les problèmes de performances dans le contexte des blocs de construction de base utilisés pour construire des scènes visuelles dans votre application. Ces blocs de construction incluent des objets de haut niveau, tels que les contrôles Button et TextBlock, ainsi que des objets de bas niveau, tels que les éléments Line et Ellipse. Au lieu de décrire les problèmes de performances en termes de graphiques des appels des noms de fonctions, Visual Profiler décrit ces problèmes en utilisant la représentation d'objets visuels. Cela est similaire à la manière dont l'outil Windows SDK, UI Spy, représente les informations. Pour plus d'informations, consultez UISpy.exe (UI Spy).

Utilisation de Visual Profiler

Pour utiliser Visual Profiler, démarrez l'application WPF que vous souhaitez analyser. Une fois que l'application a démarré, cliquez sur l'onglet Visual Profiler, cliquez sur le menu Actions, puis sur Select Process. Dans la boîte de dialogue Select Process, sélectionnez le processus d'application que vous souhaitez analyser, puis cliquez sur Select. Le nom et l'ID du processus devraient alors apparaître dans la partie supérieure de l'onglet Visual Profiler.

Pour analyser l'ampleur des problèmes de performances WPF, vous devez comprendre le rôle et la portée des services WPF sous-jacents. Ces services incluent la présentation, le rendu et l'animation. Visual Profiler fournit une représentation graphique de la manière dont les services WPF sont alloués entre les objets application. Par exemple, lorsque Visual Profiler affiche l'arborescence d'éléments visuels d'objets application, il superpose différentes nuances de rouge sur les objets afin de représenter la quantité relative de ressources que l'objet utilise. Un objet affiché avec une superposition en rouge foncé correspond à un objet qui utilise une plus grande proportion de ressources qu'un objet avec une superposition en rouge plus clair. Plus important encore, Visual Profiler fournit le détail de la quantité de ressources WPF spécifiques qu'un objet consomme.

L'illustration suivante montre l'interface utilisateur Visual Profiler.

Interface utilisateur Visual Profiler

Interface utilisateur de Visual Profiler

L'interface utilisateur Visual Profiler est divisée en huit zones.

  1. Zone de recherche de l'arborescence d'éléments

  2. Arborescence d'éléments visuels

  3. Informations et aperçu des éléments

  4. Informations d'utilisation de l'UC exclusive par les éléments

  5. Informations d'utilisation de l'UC par les applications

  6. Contrôle du zoom des données capturées

  7. Paramètres d'affichage du graphique

  8. Options de l'aperçu de l'application et du chevauchement des performances

Les sections suivantes décrivent chaque zone.

Zone de recherche de l'arborescence d'éléments

La zone de recherche de la section Element Tree offre la possibilité de rechercher des éléments dans l'arborescence d'éléments de l'application. Lorsqu'une recherche est effectuée, tous les éléments correspondants sont mis en surbrillance en jaune. Vous pouvez rechercher les éléments par nom ou par type.

Arborescence d'éléments visuels

Le contrôle d'arborescence de la section Element Tree affiche le type et le nom des éléments visuels dans l'application ainsi que des informations de hauteur et de disposition de sous-arborescence.

Voici un exemple de nom d'élément dans l'arborescence.

Bordure 'bordure1' (26) 0.02% (I)/ 0.00 % (E) - .24 ms (I) / 0.00 ms (E)

Partie du nom de l'élément

Description

Bordure

Type d'élément.

'bordure1'

Nom de l'élément.

(26)

Taille de la sous-arborescence.

0.02% (I)

Pourcentage de la taille totale de l'arborescence incluse, c'est-à-dire l'élément et tous ses descendants.

0.00 (E)

Pourcentage du total des éléments pour l'élément uniquement.

.24 ms (I)

Durée, en millisecondes, nécessaire à la disposition de l'élément et de ses descendants.

0.00 ms (E)

Durée, en millisecondes, nécessaire à la disposition de l'élément uniquement.

Utilisez le menu View pour contrôler si les informations de type Inclusif/% exclusif/Durée sont affichées.

Cliquez avec le bouton droit sur un élément pour développer ou réduire la sous-arborescence. Vous pouvez également développer son chemin réactif. Le chemin réactif indique l'élément dans la sous-arborescence qui consomme la plus grande partie de l'UC dans cette sous-arborescence.

Informations et aperçu des éléments

La section Element Information affiche le type et le nom de l'élément sélectionné, si l'élément est nommé. Elle fournit également un aperçu de l'élément dans la section Preview. Si l'élément de niveau supérieur est sélectionné, l'aperçu affiche une vue d'ensemble de l'application.

Informations d'utilisation de l'UC exclusive par les éléments

La section Element Exclusive CPU Usage affiche un graphique et des informations sur le temps processeur exclusif consommé par l'élément sélectionné dans le temps. Par exemple, un élément peut passer x% de son temps processeur sur la réorganisation de la disposition, y% sur la mesure de la disposition et z% sur le rendu.

Informations d'utilisation de l'UC par les applications

La section Application CPU Usage affiche un graphique et des informations sur les événements d'application. Visual Profiler écoute et capture divers événements d'application. Les événements d'application sont répertoriés avec des valeurs absolues et le graphique montre le temps processeur passé dans chaque événement d'application au fil du temps avec différentes couleurs. Cela vous permet de voir facilement le temps que l'application consacre à la disposition par rapport au rendu.

Le tableau suivant décrit les événements d'application représentés dans le graphique.

RemarqueRemarque

Ces événements qui correspondent à des appels de méthodes dans WPF sont représentés par le nom de la méthode, suivi du nom de la classe entre parenthèses.Par exemple, Tick (TimeManager) représente la méthode TimeManager.Tick.

Événements de l'application

Description

Durée sans étiquette

Temps passé dans WPF qui n'est pas repris dans une catégorie dans un autre événement d'application pendant tout le temps passé par l'application en dehors de WPF.

RenderMessageHandler (MediaContext)

Se produit lors du passage de restitution est initialisé. Cet événement entraîne un cycle du gestionnaire, entre autres.

Thread de rendu

Se produit lors de l'exécution des instructions de rendu sur le thread de rendu. Cet événement est utile pour détecter les applications liées au rendu.

Disposition

Se produit au cours de la passe de mesure, de réorganisation ou de rendu.

UpdateRealizations

Se produit lors de la mise à jour de représentations de bitmap internes de texte et d'effets bitmap.

Tick (TimeManager)

Se produit lorsque l'animation est graduée. Cet événement peut déclencher le gestionnaire de rendu d'animation.

Lorsque vous animez des objets dans WPF, un gestionnaire de temps qui gère les objets Clock créés pour vos chronologies. Le gestionnaire de temps est la racine d'une arborescence d'objets Clock et contrôle le flux de temps dans cette arborescence. Un gestionnaire de temps est créé automatiquement pour chaque application WPF et reste invisible au développeur d'applications. Le gestionnaire de temps fait plusieurs cycles par seconde. Le nombre réel de cycles qui se produisent à chaque seconde varie selon les ressources système disponibles.

AnimatedRenderMessageHandler (MediaContext)

Se produit pour le traitement et les mises à jour des animations. Lorsque des animations sont activées, ce gestionnaire traite et met à jour l'animation, ce qui entraîne la modification des propriétés et, à son tour, le rendu.

Render (MediaContext)

Se produit au cours de la passe de rendu. Cette méthode appelle éventuellement la méthode OnRender de chaque élément et est utile pour comprendre le coût total de OnRender pour tous les éléments. Cet événement correspond à la méthode MediaContext.Render dans un fichier Visual Studio Profiler (VSP).

Contrôle du zoom des données capturées

La section Graph Options comprend un contrôle de zoom des données capturées. En faisant glisser les handles de fenêtre de zoom, vous pouvez redimensionner et modifier l'axe du temps des graphiques d'utilisation de l'UC exclusive par les éléments et d'utilisation de l'UC par les applications.

Paramètres d'affichage du graphique

La section Graph Options contient des cases d'option et un curseur pour ajuster les paramètres du graphique. Vous utilisez les cases d'option pour spécifier le comportement de l'axe d'UC, l'axe vertical ; s'il affiche ou non les poids absolus ou relatifs. Vous utilisez le curseur pour définir la valeur maximale affichée pour le graphique.

Options de l'aperçu de l'application et du chevauchement des performances

La section Control Options contient trois boutons bascule qui exécutent les actions suivantes.

  • Cliquez sur le premier bouton bascule pour suspendre ou démarrer la collecte de données Visual Profiler.

  • Cliquez sur le bouton bascule Live Preview pour afficher un aperçu instantané de l'application dans la section Preview.

  • Cliquez sur le bouton bascule Overlay Window pour ajouter une bordure jaune autour de l'élément visuel sélectionné. En outre, pour les éléments qui utilisent la plupart du temps processeur, un chevauchement rouge est ajouté. La même couleur rouge est utilisée pour l'élément dans la section Element Tree. L'intensité de couleur rouge dépend de l'utilisation de l'UC.

Voir aussi

Concepts

Optimisation des performances des applications WPF

Couches de rendu graphiques

Vue d'ensemble du rendu graphique de WPF

UISpy.exe (UI Spy)

Autres ressources

Nouveautés des outils de profilage des performances pour WPF (Page éventuellement en anglais)