Optimizar el rendimiento: Otras recomendaciones

Actualización: noviembre 2007

En este tema se proporcionan recomendaciones de rendimiento además de las que se abordan en los temas de la sección Optimizar WPF: Rendimiento de aplicaciones.

Este tema contiene las secciones siguientes.

  • Opacidad en los pinceles comparada con opacidad en los elementos
  • Navegación hasta un objeto
  • Pruebas de posicionamiento en superficies 3D de gran tamaño
  • Evento CompositionTarget.Rendering
  • Evitar el uso de ScrollBarVisibility=Auto
  • Configurar el servicio de almacenamiento en memoria caché de las fuentes para reducir el tiempo de inicio
  • Mejoras de representación de Terminal Services
  • Temas relacionados

Opacidad en los pinceles comparada con opacidad en los elementos

Cuando se utiliza un objeto Brush para establecer la propiedad Fill o Stroke de un elemento, es mejor establecer el valor de Brush.Opacity en lugar de la propiedad Opacity del elemento. Modificar la propiedad Opacity de un elemento puede hacer que WPF cree una superficie temporal.

El objeto NavigationWindow se deriva de la clase Window y la extiende aportando compatibilidad de navegación de contenido, gracias, principalmente, a la adición de NavigationService y del diario. Puede actualizar el área cliente de NavigationWindow especificando un identificador de recursos uniforme (URI) o un objeto. En el ejemplo siguiente se muestran ambos métodos:

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;
}

Cada objeto NavigationWindow tiene un diario que graba el historial de navegación del usuario en esa ventana. Uno de los propósitos del diario es permitir a los usuarios desandar sus pasos.

Cuando se navega mediante identificador de recursos uniforme (URI), el diario almacena sólo la referencia al identificador de recursos uniforme (URI). Esto significa que cada vez que se vuelve a visitar la página, se reconstruye dinámicamente, lo que puede tardar tiempo según complejidad de la página. En este caso, el costo de almacenamiento en el diario es bajo, pero el tiempo de reconstitución de la página es potencialmente alto.

Cuando se navega mediante un objeto, el diario almacena el árbol visual completo del objeto. Esto significa que cada vez que vuelve a visitar la página, se representa inmediatamente sin tener que reconstruirla. En este caso, el costo de almacenamiento en el diario es alto, pero el tiempo de reconstitución de la página es bajo.

Cuando se utiliza el objeto NavigationWindow, es preciso tener presente cómo afecta la compatibilidad con el diario al rendimiento de la aplicación. Para obtener más información, consulte Información general sobre navegación.

Pruebas de posicionamiento en superficies 3D de gran tamaño

Las pruebas de posicionamiento en superficies 3D de gran tamaño es una operación que afecta intensamente al rendimiento por lo que se refiere al consumo de CPU. Esto se cumple especialmente cuando la superficie 3D se anima. Deshabilite las pruebas de posicionamiento en estas superficies si no las necesita. Los objetos que se derivan de UIElement pueden deshabilitar las pruebas de posicionamiento estableciendo la propiedad IsHitTestVisible en false.

Evento CompositionTarget.Rendering

El evento CompositionTarget.Rendering hace que WPF se anime de manera continua. Si utiliza este evento, desasócielo en cada oportunidad que se presente.

Evitar el uso de ScrollBarVisibility=Auto

Siempre que sea posible, evite utilizar el valor ScrollBarVisibility.Auto para las propiedades HorizontalScrollBarVisibility y VerticalScrollBarVisibility. Estas propiedades se definen para los objetos RichTextBox, ScrollViewer y TextBox, además de cómo propiedad asociada del objeto ListBox. En su lugar, establezca ScrollBarVisibility en Disabled, Hidden o Visible.

El valor Auto es para casos de espacio limitado, en que las barras de desplazamiento sólo deben mostrarse cuando se necesiten. Por ejemplo, puede ser útil utilizar este valor de ScrollBarVisibility con un control ListBox de 30 elementos, en oposición a un control TextBox con centenares de líneas de texto.

Configurar el servicio de almacenamiento en memoria caché de las fuentes para reducir el tiempo de inicio

El servicio WPF Font Cache comparte los datos de fuentes entre las aplicaciones de WPF. La primera aplicación de WPF que se ejecuta inicia este servicio aún no está en ejecución. Si utiliza Windows Vista, puede establecer el servicio "Windows Presentation Foundation (WPF) Font Cache 3.0.0.0" de "Manual" (el valor predeterminado) a "Automático (inicio retrasado)" para reducir el tiempo de inicio de las aplicaciones de WPF.

Mejoras de representación de Terminal Services

Una conexión a escritorio remoto permite a un cliente ejecutar remotamente las aplicaciones en un servidor mientras las muestra en el cliente. El servidor puede ser un servidor de Windows Terminal Server, que es capaz de prestar servicio a varias conexiones simultáneas a escritorios remotos, o una versión de Windows, que puede prestar servicio a una sola conexión a escritorio remoto. Cuando un usuario ejecuta una aplicación a través de una conexión a escritorio remoto, la aplicación se ejecuta en el servidor; la actividad del teclado y del mouse en el cliente se transmiten al servidor, mientras que la interfaz de usuario de la aplicación resultante se genera en el servidor como mapas de bits que se transmiten al cliente.

Sin embargo, enviar mapas de bits al cliente a través de la red para simular una interfaz de usuario no ofrece el mismo rendimiento que representar la interfaz de usuario localmente en el cliente. Por fortuna, las aplicaciones de WPF que se ejecutan a través de una sesión de Conexión a escritorio remoto (RDC) pueden aprovechar la compatibilidad con la representación especial de Windows Vista para representarse en el cliente.

Para sacar partido de ello, se necesita lo siguiente:

  • Debe instalarse el servidor con Windows Vista Ultimate o Windows Vista Enterprise.

  • El servidor debe tener memoria suficiente para satisfacer los requisitos de memoria del Administrador de ventanas de escritorio (DWM) (no es imprescindible cumplir otros requisitos de DWM, como los relativos a las tarjetas de vídeo).

  • El cliente debe tener la misma compilación de Vista que el servidor.

  • El cliente debe poder ejecutar el Administrador de ventanas de escritorio (DWM) de Windows Vista. DWM está habilitado cuando el servicio de administración de sesión del Administrador de ventanas de escritorio está en ejecución.

  • El cliente no debe ejecutar aplicaciones que puedan deshabilitar DWM, tales como Área de encuentro o Asistencia remota.

  • El cliente no puede realizar saltos múltiples al servidor que contiene la aplicación WPF deseada. Saltos múltiples se refiere a crear una sesión a partir de otra.

  • La configuración de la conexión a escritorio remoto del cliente debe incluir lo siguiente:

    • Composición del escritorio debe estar seleccionada en Conexión a Escritorio remoto | Opciones | Experiencia.

    • Temas debe estar seleccionada en Conexión a Escritorio remoto | Opciones | Experiencia.

    • Color de 32 bits debe estar seleccionada en Conexión a Escritorio remoto | Opciones | Mostrar | Colores.

Nota

Consulte Windows Vista Rules for Enabling Windows Aero para obtener los requisitos de DWM.

Vea también

Conceptos

Planear para mejorar el rendimiento de aplicaciones

Optimizar el rendimiento: Aprovechar el hardware

Optimizar el rendimiento: Presentación y diseño

Optimizar el rendimiento: Imágenes y gráficos 2D

Optimizar el rendimiento: Comportamiento de objetos

Optimizar el rendimiento: Recursos de aplicación

Optimizar el rendimiento: Texto

Optimizar el rendimiento: Enlace de datos

Herramientas y recursos de rendimiento de WPF

Sugerencias y trucos para animaciones