Como analizar el performance de una aplicación WPF

Ayer me escribió @dmedellin por Twitter y me comentó que su aplicación WPF estaba muy lenta y que escribiera algo al respecto, asi es que aquí me tienen.

Lo primero que tienes que saber es como funciona WPF y que cosas puedes hacer para optimizar tu aplicación.

Todas las aplicaciones WPF arrancan con 2 threads uno para toda la interfaz gráfica y el otro para el pintado de objetos y rendering. El thread de UI maneja a su vez el Dispatcher que te permite estar generando threads o ejecutando peticiones a través de un sistema de colas hacia la UI, la recomendación aqui es que uses threads y eventhandlers para que no detengas la capa de presentación, es decir, si te vas a traer un dato, agregas un eventhandler a un nuevo thread que haga la operación y una vez que tengas los datos que modifiques propiedades de los objetos para que así la interfaz no se congele.

Por otra parte, la mejor manera de analizar que esta propiciando que tu aplicación este lenta son los Profilers, los cuales analizan y te generan estadísitcas del tiempo que esta tardando en ejecutarse alguna función thread o funciones de dibujado en la interfaz, y al obtener esta información tu ya puedes optimizar tu código. image

El WPF profiler Suite esta contenido dentro del Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1 una vez que lo instalas ejecutas la aplicación “Install Windows Performance Toolkit” que esta dentro de “Microsoft Windows SDK v7.0”/ “Tools una vez que lo instales ejecuta el WPF Performance Suite, una vez abierto selecciona la herramienta que quieres ejecutar dentro de File/Add Tool, selecciona el tipo de prueba que vas a ejecutar y selecciona la DLL con las pruebas que puedes hacer por ejemplo “WpfPerf.dll” y la herramienta el Perforator.

ya que seleccionaste las pruebas que vas a ejecutar, selecciona tu aplicación, si gustas puedes apretar F5 y en esa ventana escribe el Path a tu archivo .Exe ejecuta tu aplicación y verás un arbol del lado derecho con cada una de las partes de tu aplicación y gráficas que te ayudaran a medir el rendimiento de tu aplicación.

En esta página puedes encontrar mas información https://windowsclient.net/wpf/perf/wpf-perf-tool.aspx seguro encontrarás información interesante.