WPF Performance Suite

El SDK de Windows incluye un conjunto de herramientas de generación de perfiles de rendimiento para las aplicaciones de Windows Presentation Foundation (WPF) denominado WPF Performance Suite. WPF Performance Suite permite analizar el comportamiento en tiempo de ejecución de las aplicaciones WPF y determinar la optimización del rendimiento que se puede aplicar. WPF Performance Suite incluye las herramientas de generación de perfiles de rendimiento denominadas Perforator y Visual Profiler. En este tema se describe cómo instalar y utilizar las herramientas Perforator y Visual Profiler de WPF Performance Suite.

Este tema contiene las siguientes secciones:

  • Instalar WPF Performance Suite

  • Iniciar WPF Performance Suite

  • Perforator

  • Visual Profiler

Instalar WPF Performance Suite

En los pasos siguientes se describe cómo instalar WPF Performance Suite.

  1. Si tiene una versión anterior de Windows Performance Toolkit instalada, desinstálela.

  2. Instale el SDK de Windows.

    En las opciones de instalación, asegúrese de que selecciona la opción Windows Performance Toolkit bajo Common Utilities. Para obtener información acerca de la descarga, vea la página de descarga del SDK de Windows.

  3. Después de que el SDK de Windows esté instalado, en el menú Inicio, seleccione Todos los programas, Microsoft Windows SDK v7.1 y, a continuación, Herramientas.

  4. En Herramientas, haga clic en Install Windows Performance Tool Kit.

    Aparecerá el asistente para la instalación.

  5. Siga las instrucciones que aparecen para instalar Windows Performance Toolkit.

    De forma predeterminada, se instalarán las siguientes características.

    • Analizador de rendimiento

    • Ayuda de Windows Performance Toolkit

    • GPUView

    • WPF Performance Suite

Iniciar WPF Performance Suite

Debe iniciar WPF Performance Suite antes de ejecutar la aplicación para la que desea generar un perfil. Para utilizar WPF Performance Suite, la cuenta de usuario debe tener privilegios administrativos.

En los pasos siguientes se describe cómo iniciar WPF Performance Suite.

  1. En el menú Inicio, seleccione Todos los programas y, a continuación, Microsoft Windows Performance Toolkit.

  2. Haga clic en WPF Performance Suite.

  3. Si aparece un cuadro de diálogo de Control de cuentas de usuario, haga clic en .

    WPF Performance Suite se iniciará.

La primera vez que se inicia WPF Performance Suite, aparece el cuadro de diálogo Add Tools. El cuadro de diálogo para agregar herramientas permite agregar herramientas de generación de perfiles de rendimiento. Para agregar una herramienta, debe seleccionar un ensamblado que contenga una herramienta y, a continuación, hacer clic en Scan Assembly. Puede abrir el cuadro de diálogo para agregar herramientas en cualquier momento: haga clic en Add Tool en el menú File. En la ilustración siguiente se muestra el cuadro de diálogo Add Tools.

Cuadro de diálogo Add Tools

Cuadro de diálogo Agregar herramientas

De forma predeterminada, WPF Performance Suite incluye las siguientes herramientas de generación de perfiles de rendimiento.

Herramienta

Descripción

Perforator

Analiza el comportamiento de presentación.

Visual Profiler

Genera un perfil de uso de los servicios de WPF, tales como el diseño y el control de eventos, mediante elementos del árbol visual.

Asegúrese de que las casillas de Perforator y Visual Profiler están seleccionadas y, a continuación, haga clic en Aceptar.

Perforator

Perforator es una herramienta de generación de perfiles de rendimiento para analizar el comportamiento de presentación de la aplicación WPF. La interfaz de usuario de Perforator muestra un conjunto de gráficos que permiten analizar comportamientos muy específicos de la presentación en partes de una aplicación, como la tasa de adición de rectángulo sucio y la velocidad de fotograma. WPF utiliza una técnica de presentación llamada rectángulo sucio, que significa que solo se representan las partes de la pantalla que han cambiado en un nuevo paso de representación. Además, Perforator tiene varias opciones que se pueden utilizar para buscar problemas de presentación específicos. Perforator informa también de los destinos de presentación de software y tiene un control deslizante para controlar la duración de los gráficos. En la siguiente ilustración se muestra la interfaz de usuario de Perforator.

Interfaz de usuario de Perforator

Cuadro de diálogo Add Tool

Utilizar Perforator

Para utilizar Perforator, inicie la aplicación WPF que desea analizar. Una vez que la aplicación se haya iniciado, haga clic en la pestaña Perforator, haga clic en el menú Actions y, a continuación, en Select Process. En el cuadro de diálogo de selección de procesos, seleccione el proceso de aplicación que desee analizar y, a continuación, haga clic en Select. El nombre y el identificador de proceso deben aparecer en la parte superior de la pestaña Perforator. Seleccione las opciones de presentación que desee analizar. Los valores de datos de Perforator, como la velocidad de fotograma, reflejan inmediatamente el comportamiento de presentación de la aplicación. En la ilustración siguiente se muestra un ejemplo.

Perforator con las opciones de aplicación y presentación seleccionadas

Ventana principal de Perforator con opciones seleccionadas

Gráficos de Perforator

Es importante que la velocidad de fotograma, la tasa de adición de rectángulo sucio y el número de destinos de presentación intermedios permanezcan bajos para que la presentación de la aplicación WPF sea eficaz. Perforator tiene muchos gráficos útiles para supervisar estos niveles.

En la tabla siguiente se describen las métricas de las que informa cada gráfico.

Gráfico de historial

Descripción

Notas

Velocidad de fotograma

Informa de la velocidad con la que la aplicación se presenta en la pantalla.

Para aplicaciones sin animaciones, este valor debe estar próximo al 0. Durante las animaciones en una aplicación con un rendimiento satisfactorio, la velocidad de fotograma debe estar próxima a la frecuencia de actualización del monitor (normalmente 60 o 75).

Tasa de adición de rectángulo sucio

Indica cuántas regiones rectangulares tiene que actualizar WPF para cada fotograma.

El término rectángulo sucio hace referencia a una técnica de presentación según la cual solo se vuelven a presentar las partes de la pantalla que han cambiado. Un valor alto indica que cambian muchas áreas. Esto no es necesariamente bueno ni malo, sino un valor que debe tenerse en cuenta para el rendimiento general de la aplicación.

Destinos de representación intermedios (IRT) de software por fotograma

Muestra el número de destinos de representación intermedios (IRT) de software necesarios para representar un fotograma de la aplicación.

Los IRT son superficies de software costosas que WPF debe asignar y en las que WPF copia datos. Los IRT de software son más costosos que los IRT de hardware.

Los IRT suelen deberse al uso de DrawingBrush, VisualBrush, la propiedad Opacity en Visual o los modos de mosaico en TileBrush. Si este número es alto (por ejemplo, mayor que 5), indica que el tiempo de ejecución de WPF está realizando una gran cantidad de trabajo para presentar la aplicación.

En un equipo que admita la aceleración de hardware, este número debe ser 0. De lo contrario, este número indica que parte de la escena se presenta mediante la canalización más lenta de software.

Destinos de representación intermedios (IRT) de hardware por fotograma

Muestra el número de destinos de presentación intermedios (IRT) de hardware necesarios para presentar un fotograma de la aplicación.

Los IRT son superficies de hardware costosas que WPF debe asignar y en las que WPF copia datos.

Los destinos de presentación intermedios se producen normalmente al usar DrawingBrush, VisualBrush o la propiedad Opacity en Visual o los modos en mosaico en TileBrush. Si este número es alto (por ejemplo, mayor que 5), indica que el tiempo de ejecución de WPF está realizando una gran cantidad de trabajo para presentar la aplicación. En este caso, tendrá que analizar todas las áreas del código que utilizan los elementos antes mencionados.

Los IRT de hardware son menos costosos que los IRT de software.

Uso de la memoria de vídeo

Realiza un seguimiento de las asignaciones grandes de memoria de vídeo a WPF para la textura y los destinos de presentación. Esta métrica no realiza un seguimiento de las asignaciones de memoria para el controlador de vídeo ni las asignaciones de memoria para compilar y cargar los sombreadores de píxeles y vértices.

Si se supera la cantidad de memoria de textura disponible, normalmente la lógica de presentación de WPF recurrirá al software y las presentaciones múltiples (en varios monitores) tendrán un efecto multiplicativo en la cantidad de memoria de vídeo necesaria para una aplicación.

Opciones de presentación de Perforator y optimización de la presentación

Perforator permite establecer muchas opciones de presentación que afectan al comportamiento de presentación en tiempo real de la aplicación. Al establecer estas opciones, podrá ver los eventos de presentación que podrían ser problemáticos en su aplicación. Estas opciones se encuentran en la parte inferior de la interfaz de usuario.

En la siguiente ilustración se muestran las opciones de presentación de Perforator.

Opciones de presentación de Perforator

Opciones de presentación de Perforator

En general, para mejorar el rendimiento de las aplicaciones WPF, debe minimizar la presentación de software y disminuir el número de destinos de presentación intermedios. En las siguientes secciones se explica cómo Perforator puede ayudarle a conseguirlo.

Evitar la presentación de software

Dado que la canalización de presentación de hardware de WPF es mucho más rápida que la canalización de presentación de software, cuanto menos interfaz de usuario de la aplicación se presente en software, más rápida será la presentación de esa aplicación. Normalmente, el tiempo necesario para presentar un área en software es proporcional al número de píxeles presentados. Por consiguiente, sea cuidadoso con la presentación de áreas extensas mediante la canalización de software. Las áreas pequeñas no presentan problemas.

En la tabla siguiente se enumeran las opciones de Perforator que pueden ayudar a detectar problemas de presentación de software.

Opción

Descripción

Notas

Draw software rendering with purple tint

Dibuja todas las áreas presentadas mediante la canalización de presentación de software con un tono púrpura. Se incluyen los destinos de presentación de software, el contenido 3D de software y el retroceso de software de primitivas individuales.

La canalización de presentación de hardware de WPF es mucho más rápida que la canalización de presentación de software. Normalmente, si la presentación de software es excesiva, es indicativo de problemas. Algunas situaciones que provocarían este comportamiento serían un mosaico excesivo de Brush o superar tamaño de textura de la tarjeta de vídeo.

Draw software rendered bitmap effects with red tint

Dibuja los efectos de mapa de bits heredados presentados mediante software con tono rojo.

Las clases BitmapEffect presentadas mediante software son lentas y se deben evitar. Debe utilizar las clases Effect presentadas mediante hardware que se introdujeron en .NET Framework 3.5 SP1.

En la ilustración siguiente se muestra la aplicación de ejemplo PhotoDemo con la opción Draw software rendering with purple tint habilitada.

PhotoDemo con tono púrpura

Aplicación Photodemo mostrando las opciones de representación de Perforator

Supervisar las regiones desfasadas

Como WPF actualiza solamente las partes de una ventana según es necesario, puede ser útil visualizar las actualizaciones en cualquier momento. En algunos casos, aunque no se produzcan animaciones en la aplicación, las regiones se seguirán actualizando. Las opciones siguientes ayudan a visualizar los comportamientos de actualización. Las actualizaciones innecesarias son especialmente importantes en escenarios de escritorio remoto, máquinas virtuales y otros escenarios similares cuando WPF debe enviar nuevos mapas de bits a través de la red. Además, las actualizaciones innecesarias pueden afectar a la duración de la batería de los equipos portátiles.

Opción

Descripción

Notas

Show dirty-region update overlay

Hace que las actualizaciones de WPF en pantalla se indiquen volviendo a aplicar color. Esto permite ver cuándo y dónde se vuelven a dibujar las áreas de una aplicación.

Puesto que WPF sólo actualiza partes de la ventana según convenga, puede ser útil visualizar la parte de la ventana que se está actualizando en cualquier momento. Utilice esta opción cuando la velocidad de fotograma y la tasa de adición de rectángulo sucio no sean cero pero no cambien las presentaciones visuales en la aplicación.

Disable dirty region support

Hace que WPF actualice la ventana completa cada vez que se realice un cambio.

Esta opción es útil para forzar la actualización de la ventana completa. Normalmente, solo se vuelve a dibujar la parte de la ventana que ha cambiado. Si se habilita esta opción, la presentación de la aplicación será mucho más lenta.

Clear back-buffer before rendering

Borra las ventanas de la aplicación antes de cada operación de dibujo.

Esta opción es una alternativa a Show dirty-region update overlay. Muestra la región desfasada más reciente de manera eficaz, mientras que la opción de superposición de actualización de región desfasada es más útil para ver los cambios en la región desfasada a lo largo del tiempo.

Detectar otros orígenes de degradación del rendimiento

Perforator permite deshabilitar ciertas operaciones que afectan al rendimiento para determinar si están produciendo cuellos de botella en la aplicación. Al supervisar la velocidad de fotograma de las aplicaciones y seleccionar estas opciones individualmente, se puede determinar si operaciones tales como la presentación 3D o el cambio de escala de la imagen están produciendo problemas de presentación. Si selecciona una de estas opciones y la velocidad de fotograma cae significativamente, probablemente habrá identificado el cuello de botella en la aplicación.

Opción

Descripción

Notas

Disable Opacity Effects

Deshabilita algunos usos de opacidad que posiblemente reduzcan el rendimiento.

Para evitar problemas de rendimiento en general, piense en establecer el valor de la opacidad en un objeto de nivel bajo, como Brush, en vez de en un objeto de nivel alto, como Button.

Disable per-primitive software fallback

Deshabilita el retroceso de software para primitivas de presentación individuales. No se pueden deshabilitar los destinos de presentación intermedios de software ni otros tipos de presentaciones de software.

En la mayoría de los casos, esta opción no es necesaria. Manténgala desactivada.

Disable high-quality image rescaling

Deshabilita el cambio de escala de imágenes grandes a tamaños menores.

Permite ver el efecto del cambio de escala de la imagen en la aplicación. Si al activar esta opción se reduce significativamente la velocidad de fotograma, considere la descodificación de las imágenes a un tamaño que se aproxime al tamaño en que se mostrarán.

Disable 3D rendering

Deshabilita las operaciones de presentación 3D

Permite ver el efecto de las operaciones de presentación 3D en la aplicación.

Visual Profiler

Visual Profiler es una herramienta de generación de perfiles de rendimiento de los servicios de WPF, tales como el diseño, la presentación y la animación, para los elementos del árbol visual. Al analizar los resultados de generación de perfiles de esta herramienta, puede determinar qué elementos visuales de la aplicación pueden estar originando cuellos de botella de rendimiento.

Visual Profiler muestra los problemas de rendimiento en el contexto de los bloques de creación básicos que se utilizan para construir escenas visuales en la aplicación. Estos bloques de creación incluyen objetos de nivel alto, como los controles Button y TextBlock, así como objetos de nivel bajo, como los elementos Line y Ellipse. En lugar de describir los problemas de rendimiento en términos de gráficos de llamadas de nombres de funciones, Visual Profiler describe estos problemas mediante la presentación de los objetos visuales. Se parece a la forma en que la herramienta de Windows SDK, IU de Spy, representa la información. Para obtener más información, vea UISpy.exe (UI Spy).

Usar Visual Profiler

Para utilizar Visual Profiler, inicie la aplicación WPF que desea analizar. Una vez que la aplicación se haya iniciado, haga clic en la pestaña Visual Profiler, haga clic en el menú Actions y, a continuación, en Select Process. En el cuadro de diálogo de selección de procesos, seleccione el proceso de aplicación que desee analizar y, a continuación, haga clic en Select. El nombre y el identificador de proceso deben aparecer en la parte superior de la pestaña Visual Profiler.

Para analizar en su conjunto los problemas de rendimiento de WPF, es preciso entender la función y el ámbito de los servicios de WPF subyacentes. Estos servicios incluyen el diseño, la presentación y la animación. Visual Profiler proporciona una representación gráfica de la asignación de los servicios de WPF entre los objetos de la aplicación. Por ejemplo, cuando Visual Profiler muestra el árbol visual de los objetos de la aplicación, superpone diferentes sombras de rojo en los objetos para representar la cantidad relativa de recursos que usa el objeto. Un objeto que se muestra con una superposición roja más oscura representa un objeto que utiliza una mayor proporción de recursos que un objeto con una superposición roja más clara. Más aún, Visual Profiler proporciona un desglose de la cantidad de recursos de WPF concretos que usa un objeto.

En la siguiente ilustración se muestra la interfaz de usuario de Visual Profiler.

Interfaz de usuario de Visual Profiler

Interfaz de usuario del generador de perfiles de Visual

La interfaz de usuario de Visual Profiler tiene ocho áreas.

  1. Cuadro de búsqueda del árbol de elementos

  2. Árbol de elementos visuales

  3. Detalles y vista previa de elementos

  4. Detalles de uso de CPU exclusivos del elemento

  5. Detalles de uso de CPU de la aplicación

  6. Control de zoom de los datos capturados

  7. Configuración de pantalla del gráfico de historial

  8. Opciones para la vista previa y la superposición del rendimiento de la aplicación

En las siguientes secciones se describe cada área.

Cuadro de búsqueda del árbol de elementos

El cuadro de búsqueda de la sección del árbol de elementos permite buscar elementos en el árbol de elementos de la aplicación. Cuando se realiza una búsqueda, todos los elementos coincidentes se resaltan en amarillo. Puede buscar los elementos por tipo o por nombre.

Árbol de elementos visuales

El control de árbol de la sección del árbol de elementos muestra el tipo y el nombre de los elementos visuales de la aplicación junto con los detalles de tamaño y diseño del subárbol.

A continuación se muestra un ejemplo de una etiqueta de elemento del árbol.

Border 'border1' (26) 0.02% (I)/ 0.00 % (E) - .24 ms (I) / 0.00 ms (E)

Elemento de la etiqueta de elemento

Descripción

Borde

Tipo del elemento.

'border1'

Nombre del elemento.

(26)

Tamaño del subárbol.

0.02% (I)

Porcentaje del tamaño total del árbol, es decir, el elemento y todos sus descendientes.

0.00 (E)

Porcentaje de elementos totales únicamente para el elemento.

.24 ms (I)

Tiempo en milisegundos para diseñar el elemento y sus descendientes.

0.00 ms (E)

Tiempo en milisegundos para diseñar únicamente el elemento.

Utilice el menú Ver para controlar si se debe mostrar la información de tiempo o porcentaje de inclusión/exclusión.

Haga clic con el botón secundario en un elemento para expandir o contraer el subárbol. También puede expandir su ruta de acceso activa. La ruta de acceso activa muestra el elemento del subárbol que utiliza la mayoría de CPU en ese subárbol.

Detalles y vista previa de elementos

La sección Element Information muestra el tipo y el nombre del elemento seleccionado, si el elemento tiene un nombre. También proporciona una vista previa del elemento de la sección de vista previa. Si se selecciona el elemento superior, la vista previa muestra una vista previa de la aplicación.

Detalles de uso de CPU exclusivos del elemento

La sección Element Exclusive CPU Usage muestra un gráfico de historial y los detalles del tiempo de CPU exclusivo que ha utilizado el elemento seleccionado a lo largo del tiempo. Por ejemplo, un elemento puede usar un x% de tiempo de CPU en la organización del diseño, y% en la medición del diseño y z% en la presentación.

Detalles de uso de CPU de la aplicación

La sección Application CPU Usage muestra un gráfico de historial y los detalles de los eventos de aplicación. Visual Profiler escucha y captura varios eventos de aplicación. Los eventos de aplicación se muestran con valores absolutos, y el gráfico de historial muestra el tiempo de CPU que se invierte en cada evento de aplicación a lo largo del tiempo con diferentes colores. Esto le permite ver con facilidad el tiempo que la aplicación invierte en el diseño frente a la presentación.

En la tabla siguiente se describen los eventos de aplicación representados en el gráfico.

NotaNota

Los eventos que corresponden a llamadas a métodos en WPF se representan con el nombre del método seguido del nombre de la clase entre paréntesis.Por ejemplo, Tick (TimeManager) representa el método TimeManager.Tick.

Eventos de aplicación

Descripción

Hora sin etiqueta

Tiempo invertido en WPF no clasificado en ningún otro evento de aplicación; todo el tiempo usado por la aplicación fuera de WPF.

RenderMessageHandler (MediaContext)

Se produce cuando se inicia el paso de presentación. Este evento genera una marca del administrador de tiempo, entre otras cosas.

Rendering Thread

Se produce al ejecutar las instrucciones de presentación en el subproceso de presentación. Es útil para detectar aplicaciones enlazadas a presentaciones.

Diseño

Se produce durante el paso de medida, organización y presentación.

UpdateRealizations

Se produce al actualizar representaciones internas de texto mediante mapas de bits y efectos de mapa de bits.

Tick (TimeManager)

Se produce cuando la animación está marcando. Este evento puede desencadenar el controlador de presentación de animación.

Al animar los objetos en WPF, es el administrador de tiempo el que administra los objetos Clock creados para las escalas de tiempo. El administrador de tiempo es la raíz de un árbol de objetos Clock y controla el flujo de tiempo en ese árbol. El administrador de tiempo se crea automáticamente para cada aplicación WPF y no es visible para el programador de aplicaciones. El administrador de tiempo genera muchas "marcas" por segundo. El número de marcas que se producen por segundo varía dependiendo de los recursos disponibles en el sistema.

AnimatedRenderMessageHandler (MediaContext)

Se produce para el procesamiento y las actualizaciones de las animaciones. Cuando las animaciones están habilitadas, este controlador procesa y actualiza la animación, lo que hace que las propiedades cambien y se produzca la presentación.

Render (MediaContext)

Se produce durante el paso de presentación. Este método llama finalmente al método OnRender de cada elemento y es útil para entender el costo total de OnRender de todos los elementos. Este evento corresponde al método MediaContext.Render en un archivo de Visual Studio Profiler (VSP).

Control de zoom de los datos capturados

La sección de opciones del gráfico incluye un control de zoom de datos capturados. Si se arrastran los identificadores de ventana del zoom, puede cambiar el tamaño y cambiar el eje de tiempo de los gráficos de historial Element Exclusive CPU Usage y Application CPU Usage.

Configuración de pantalla del gráfico de historial

La sección de opciones del gráfico incluye botones de radio y un control deslizante para ajustar la configuración del gráfico de historial. Utilice los botones de radio para especificar el comportamiento del eje de CPU, el eje vertical; si muestra ponderaciones absolutas o relativas. Utilice el control deslizante para establecer el valor máximo mostrado para el gráfico.

Opciones para la vista previa y la superposición del rendimiento de la aplicación

La sección Control Options contiene tres botones de alternancia que realizan las acciones siguientes.

  • Haga clic en el primer botón de alternancia para pausar o iniciar la recolección de datos de Visual Profiler.

  • Haga clic en el botón de alternancia Live Preview para mostrar una vista previa activa de la aplicación en la sección de vista previa.

  • Haga clic en el botón de alternancia Overlay Window para agregar un borde amarillo alrededor del elemento visual seleccionado. Además, para los elementos que utilizan la mayoría del tiempo de la CPU, se agrega una superposición roja. El mismo color rojo se utiliza para el elemento de la sección del árbol de elementos. La intensidad del color rojo guarda relación con el uso de CPU.

Vea también

Conceptos

Optimizar WPF: Rendimiento de aplicaciones

Niveles de representación de gráficos

Información general sobre la representación de gráficos en WPF

UISpy.exe (UI Spy)

Otros recursos

What's New for Performance Profiling Tools for WPF