Partager via


Optimisation des performances : autres recommandations

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 contient les sections suivantes :

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

  • Navigation vers un objet

  • Test de positionnement 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

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 uniform resource identifier (URI) ou un objet. L'exemple suivant montre ces deux méthodes.

        Private Sub buttonGoToUri(ByVal sender As Object, ByVal args As RoutedEventArgs)
            navWindow.Source = New Uri("NewPage.xaml", UriKind.RelativeOrAbsolute)
        End Sub

        Private Sub buttonGoNewObject(ByVal sender As Object, ByVal args As RoutedEventArgs)
            Dim nextPage As New NewPage()
            nextPage.InitializeComponent()
            navWindow.Content = nextPage
        End Sub
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 uniform resource identifier (URI), le journal n'enregistre que la référence de l'uniform resource identifier (URI). 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 de positionnement sur les grandes surfaces 3D

Le test de positionnement 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 de positionnement sur les grandes surfaces 3D s'il n'est pas indispensable. Les objets dérivés de UIElement peuvent désactiver le test de positionnement 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 Cache de police de WPF partage les données de police entre les différentes 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 service "Cache de police de Windows Presentation Foundation (WPF) 3.0.0.0" de "Manuel" (valeur par défaut) en "Automatique (début différé)" pour réduire le temps de démarrage initial des applications WPF.

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

Conseils et astuces sur les animations