Share via


Optimisation des performances : autres recommandations

Mise à jour : novembre 2007

Cette rubrique donne des recommandations pour améliorer les performances en plus de celles abordées par les rubriques de la section Optimisation des performances des applications WPF.

Cette rubrique comprend les sections suivantes.

  • Opacité au niveau des pinceaux et opacité au niveau des éléments
  • Navigation vers un objet
  • Test d'atteinte sur les grandes surfaces 3D
  • Événement CompositionTarget.Rendering
  • Évitez d'utiliser ScrollBarVisibility=Auto
  • Configurez le service FontCache de manière à réduire le temps de démarrage
  • Améliorations du rendu des services de Terminal Server
  • Rubriques connexes

Opacité au niveau des pinceaux et opacité au niveau des éléments

Lorsque vous utilisez un Brush pour le Fill ou le Stroke d'un élément, il vaut mieux définir la valeur Brush.Opacity que la propriété Opacity de l'élément. Modifier la propriété Opacity d'un élément peut amener WPF à créer une surface temporaire.

L'objet NavigationWindow est dérivé de Window et l'étend avec la prise en charge de la navigation de contenu, principalement en combinant NavigationService et le journal. Vous pouvez mettre à jour la zone cliente de NavigationWindow en spécifiant un URI (Uniform Resource Identifier) ou un objet. L'exemple suivant montre ces deux méthodes.

private void buttonGoToUri(object sender, RoutedEventArgs args)
{
    navWindow.Source = new Uri("NewPage.xaml", UriKind.RelativeOrAbsolute);
}

private void buttonGoNewObject(object sender, RoutedEventArgs args)
{
    NewPage nextPage = new NewPage();
    nextPage.InitializeComponent();
    navWindow.Content = nextPage;
}

Chaque objetNavigationWindow possède un journal qui enregistre l'historique de navigation de l'utilisateur dans cette fenêtre. L'un des objectifs du journal est de permettre aux utilisateurs de retracer leurs étapes.

Lorsque vous naviguez à l'aide d'un URI (Uniform Resource Identifier), le journal n'enregistre que la référence de l'URI (Uniform Resource Identifier). Autrement dit, chaque fois que vous revisitez la page, elle est reconstruite dynamiquement, ce qui peut être long selon sa complexité. Dans ce cas, le coût de stockage du journal est faible, mais le temps nécessaire à la reconstitution de la page est élevé.

Lorsque vous naviguez à l'aide d'un objet, le journal enregistre intégralement l'arborescence visuelle de l'objet. Autrement dit, chaque fois que vous revisitez la page, elle réapparaît immédiatement sans avoir besoin d'être reconstruite. Dans ce cas, le coût de stockage du journal est élevé, mais le temps nécessaire à la reconstitution de la page est faible.

Lorsque vous utilisez l'objet NavigationWindow vous ne devez pas perdre de vue l'impact de la journalisation sur les performances de votre application. Pour plus d'informations, consultez Vue d'ensemble de la navigation.

Test d'atteinte sur les grandes surfaces 3D

Le test d'atteinte sur les grandes surfaces 3D est une opération très coûteuse en termes de consommation processeur. C'est particulièrement vrai lorsque la surface 3D est animée. Désactivez le test d'atteinte sur les grandes surfaces 3D s'il n'est pas indispensable. Les objets dérivés de UIElement peuvent désactiver le test d'atteinte en attribuant la valeur false à la propriété IsHitTestVisible.

Événement CompositionTarget.Rendering

L'événement CompositionTarget.Rendering demande à WPF d'effectuer une animation continue. Si vous utilisez cet événement, détachez-le chaque fois que possible.

Évitez d'utiliser ScrollBarVisibility=Auto

Chaque fois que possible, évitez d'utiliser la valeur ScrollBarVisibility.Auto pour les propriétés HorizontalScrollBarVisibility et VerticalScrollBarVisibility. Ces propriétés sont définies pour RichTextBox, ScrollViewer et les objets TextBox ;elles sont également définies en tant que propriété attachée pour l'objet ListBox. Affectez plutôt à la propriété ScrollBarVisibility la valeur Disabled, Hidden ou Visible.

La valeur Auto doit s'utiliser lorsque place est limitée et que les barres de défilement ne doivent apparaître que si nécessaire. Par exemple, il peut être intéressant d'utiliser cette valeur de ScrollBarVisibility avec une ListBox de 30 éléments contrairement à une TextBox d'une centaine de lignes.

Configurez le service FontCache de manière à réduire le temps de démarrage

Le service FontCache de WPF partage les données de police entre les applications WPF. La première application WPF que vous exécutez démarre ce service s'il n'est pas déjà en cours d'exécution. Si vous utilisez Windows Vista, vous pouvez modifier le paramétrage du Cache de police de Windows Presentation Foundation (WPF) 3.0.0.0" en passant de "Manuel" (valeur par défaut) à "Automatique (début différé)" pour réduire le temps de démarrage initial des applications WPF.

Améliorations du rendu des services de Terminal Server

Une connexion Bureau à distance permet à un client d'exécuter des applications à distance tout en les affichant sur le poste client. Le serveur peut être soit Terminal Server de Windows, qui est capable de desservir plusieurs connexions distantes simultanées, soit une version de Windows, qui ne peut gérer qu'une seule connexion à distance. Lorsqu'un utilisateur exécute une application via une connexion à distance, l'exécution a lieu sur le serveur et l'activité du clavier et de la souris est transmise au client, tandis que l'interface utilisateur d'application résultante est générée sur le serveur sous forme de bitmaps transmis au client.

Cependant, l'envoi de bitmaps au client sur un réseau pour simuler une interface utilisateur n'offre pas les mêmes performances qu'un rendu de l'interface utilisateur directement sur le client. Heureusement, les applications WPF qui s'exécutent dans une session connexion Bureau à distance (RDC, Remote Desktop Connection) peuvent exploiter la prise en charge de rendu spéciale de Windows Vista pour effectuer une restitution sur le client.

Pour pouvoir tirer parti de cet avantage, il faut que les conditions suivantes soient remplies :

  • Windows Vista Ultimate ou Windows Vista Enterprise doit être installé sur le serveur.

  • Le serveur doit avoir assez de mémoire pour satisfaire les spécifications mémoire du Gestionnaire de fenêtrage (DWM, Desktop Window Manager) ; les autres spécifications de configuration du Gestionnaire de fenêtrage, telles que celles concernant les cartes vidéo, n'ont pas besoin d'être remplies.

  • Le client doit avoir la même version de Vista que le serveur.

  • Le client doit pouvoir exécuter le Gestionnaire de fenêtrage de Windows Vista. Le Gestionnaire de fenêtrage est activé lorsque le service Gestionnaire de sessions du Gestionnaire de fenêtrage est en cours d'exécution.

  • Le client ne doit pas exécuter d'applications susceptibles de désactiver le Gestionnaire de fenêtrage, comme Espace de collaboration ou Assistance à distance.

  • Le client ne peut pas créer de sessions en cascade vers le serveur où se trouve l'application WPF souhaitée. Créer des sessions en cascade signifie créer une session à partir d'une autre.

  • La configuration de connexion à distance du client doit inclure les éléments suivants :

    • La composition du Bureau doit être sélectionnée dans Connexion Bureau à distance | Options | Expérience.

    • Les thèmes doivent être sélectionnés dans Connexion Bureau à distance | Options | Expérience.

    • L'option Couleur 32 bits doit être sélectionnée dans Connexion Bureau à distance | Options | Affichage | Couleurs.

Remarque :

Pour plus d'informations sur les spécifications du Gestionnaire de fenêtrage, consultez la page Règles Windows Vista d'activation de Windows Aero (en anglais).

Voir aussi

Concepts

Planification des performances des applications

Optimisation des performances : tirer parti du matériel

Optimisation des performances : disposition et conception

Optimisation des performances : graphiques 2D et acquisition d'images

Optimisation des performances : comportement d'objets

Optimisation des performances : ressources d'application

Optimisation des performances : texte

Optimisation des performances : liaison de données

Ressources et outils d'analyse des performances WPF

Conseils et astuces sur les animations