WPF Performance Suite

Le Kit de développement logiciel (SDK) Windows comprend une suite d'outils de profilage des performances pour les applications Windows Presentation Foundation (WPF), appelée WPF Performance Suite. Cette 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. Elle 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

  • Profileur Visual

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 que vous sélectionnez l'option Windows Performance Toolkit sous Utilitaires couramment utilisés. Pour plus d'informations sur le téléchargement, consultez la Page de téléchargement du Kit de développement logiciel Windows.

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

  4. Sous Outils, cliquez sur Installer Windows Performance Toolkit.

    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, puis Microsoft 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 Ajouter des outils s'affiche. La boîte de dialogue Ajouter des outils vous permet d'ajouter des outils de profilage des performances. Pour ajouter un outil, vous sélectionnez un assembly qui contient un outil, puis vous cliquez sur Analyser l'assembly. Vous pouvez ouvrir la boîte de dialogue Ajouter un outil à tout moment en cliquant sur Ajouter un outil dans le menu Fichier. L'illustration suivante montre la boîte de dialogue Ajouter des outils.

Boîte de dialogue Ajouter des outils

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.

Assurez-vous que les cases Perforator et Visual Profiler sont coché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 de 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 rechercher 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 de Perforator.

Interface utilisateur de Perforator

Boîte de dialogue Ajouter un outil

Aa969767.collapse_all(fr-fr,VS.110).gifUtilisation de Perforator

Pour utiliser Perforator, démarrez l'application WPF que vous souhaitez analyser. Une fois que l'application a démarré, cliquez sur Perforator, puis dans le menu Actions, cliquez sur Sélectionner le processus. Dans la boîte de dialogue Sélectionner le processus, sélectionnez le processus d'application que vous souhaitez analyser, puis cliquez sur Sélectionner. Le nom et l'ID du processus devraient alors apparaître en haut 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

Aa969767.collapse_all(fr-fr,VS.110).gifGraphiques 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 de nouveau affichées. Une valeur élevée indique que de nombreuses régions sont modifiées. Cela n'est pas nécessairement bon ou 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 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, 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

Suit les allocations importantes de mémoire vidéo à WPF pour la texture et les cibles de rendu. Cette mesure ne suit 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 nécessaire pour une application.

Aa969767.collapse_all(fr-fr,VS.110).gifOptions de rendu et optimisation de rendu Perforator

Perforator permet de définir un grand nombre d'options de rendu qui influent sur 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.

Aa969767.collapse_all(fr-fr,VS.110).gifRendu logiciel à éviter

É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. Ainsi, 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

Tracer le rendu logiciel en violet

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.

Tracer les effets bitmaps de rendu logiciel en rouge

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 Tracer le rendu logiciel en violet activée.

PhotoDemo avec la teinte violette

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

Aa969767.collapse_all(fr-fr,VS.110).gifSurveillance des régions modifiées

É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 régions continuent à être mises à 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 quand WPF doit envoyer de nouvelles images bitmaps sur le réseau. En outre, les mises à jour inutiles peuvent affecter l'autonomie des batteries des ordinateurs portables.

Option

Description

Remarques

Afficher le chevauchement de mise à jour de régions modifiées

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 quand 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.

Désactiver la prise en charge des régions modifiées

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.

Désactiver la mémoire tampon d'arrière-plan avant le rendu

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

Cette option est une alternative à Afficher le chevauchement de mise à jour de régions modifiées. Elle indique clairement la région modifiée la plus récente alors que le chevauchement de mise à jour de régions modifiées est plus utile pour voir les modifications de la région modifiée dans le temps.

Aa969767.collapse_all(fr-fr,VS.110).gifDé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 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

Désactiver les effets d'opacité

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.

Désactiver le recours logiciel par primitive

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 nécessaire. Ne l'activez pas.

Désactiver la remise à l'échelle des images de haute qualité

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.

Désactiver le rendu 3D

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 du Kit de développement logiciel Windows UI Spy représente les informations. Pour plus d'informations, consultez UISpy.exe (UI Spy).

Aa969767.collapse_all(fr-fr,VS.110).gifUtilisation 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, puis dans le menu Actions, cliquez sur Sélectionner le processus. Dans la boîte de dialogue Sélectionner le processus, sélectionnez le processus d'application que vous souhaitez analyser, puis cliquez sur Sélectionner. Le nom et l'ID du processus devraient alors apparaître en haut 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, quand Visual Profiler affiche l'arborescence d'éléments visuels d'objets application, il superpose différentes nuances de rouge sur les objets pour 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 de Visual Profiler.

Interface utilisateur de Visual Profiler

Interface utilisateur de Visual Profiler

L'interface utilisateur de 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.

Aa969767.collapse_all(fr-fr,VS.110).gifZone de recherche de l'arborescence d'éléments

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

Aa969767.collapse_all(fr-fr,VS.110).gifArborescence d'éléments visuels

Le contrôle d'arborescence de la section Arborescence d'éléments 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) - 0,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.

0,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 Affichage 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.

Aa969767.collapse_all(fr-fr,VS.110).gifInformations et aperçu des éléments

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

Aa969767.collapse_all(fr-fr,VS.110).gifInformations d'utilisation de l'UC exclusive par les éléments

La section Utilisation de l'UC exclusive par l'élément 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.

Aa969767.collapse_all(fr-fr,VS.110).gifInformations d'utilisation de l'UC par les applications

La section Utilisation de l'UC par l'application 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.

Notes

Les é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 classé dans un autre événement d'application pendant tout le temps passé par l'application en dehors de WPF.

RenderMessageHandler (MediaContext)

Se produit à l'initialisation de la passe de rendu. Cet événement entraîne un cycle du gestionnaire, entre autres.

Thread de rendu

Se produit au moment 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 pendant la passe de mesure, de réorganisation et de rendu.

UpdateRealizations

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

Tick (TimeManager)

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

Quand vous animez des objets dans WPF, un gestionnaire de temps 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. Quand des animations sont activées, ce gestionnaire traite et met à jour l'animation, ce qui entraîne la modification des propriétés, puis le rendu.

Render (MediaContext)

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

Aa969767.collapse_all(fr-fr,VS.110).gifContrôle du zoom des données capturées

La section Options de graphique 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 Utilisation de l'UC exclusive par l'élément et Utilisation de l'UC par l'application.

Aa969767.collapse_all(fr-fr,VS.110).gifParamètres d'affichage du graphique

La section Options de graphique inclut 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.

Aa969767.collapse_all(fr-fr,VS.110).gifOptions de l'aperçu de l'application et du chevauchement des performances

La section Options de contrôle 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 Aperçu instantané pour afficher un aperçu instantané de l'application dans la section Aperçu.

  • Cliquez sur le bouton bascule Fenêtre superposée 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 Arborescence d'éléments. L'intensité de couleur rouge dépend de l'utilisation de l'UC.

Voir aussi

Concepts

UISpy.exe (UI Spy)

Autres ressources

Optimisation des performances des applications WPF

Couches de rendu graphiques

Vue d'ensemble du rendu graphique de WPF

Nouveautés pour les outils de profilage des performances pour WPF