¿WPF es la razón por la que mi aplicación es lenta?
-
19-09-2019 - |
Pregunta
Estoy desarrollando una aplicación usando WPF.La aplicación se ejecuta en pantalla completa y necesito que cambie su tamaño sin importar la resolución del monitor.El diseñador gráfico ha diseñado hermosas imágenes para los botones, fondos, etc. de la interfaz de usuario.Utilizando un complemento de Illustrator, todas las imágenes se han convertido a archivos xaml.Agregué todas estas imágenes a la aplicación y se ven geniales.También estoy usando mucho Grid
diseños para que la pantalla pueda cambiar de tamaño manteniendo el diseño.Todo esto se muestra como se desea, nada parece estirado cuando se ejecuta a una resolución diferente.Sin embargo, las transiciones de pantalla y la interacción con la interfaz de usuario son lentas.
Me pregunto: ¿esto se debe al uso intensivo de gráficos?¿Estoy usando demasiados? Grid
diseños?Pero necesito el Grid
s para que pueda tener independencia de resolución.
La aplicación funciona bien en mi máquina de desarrollo, pero es notablemente más lenta en una máquina con menores capacidades de rendimiento.Sí, esto es de esperarse, pero no en la medida que estoy viendo.Mi empleador insiste en que la aplicación se ejecuta sin problemas en estas máquinas de menor rendimiento.
He creado algunos perfiles de la aplicación y parece que lo que lleva más tiempo es la visualización (aunque no estoy seguro de entender completamente cómo usar un generador de perfiles de manera efectiva).
Si es WPF el que está provocando la desaceleración, ¿qué puedo hacer para mejorarlo?
Solución
Puede perforar en el que las actividades de WPF están utilizando el tiempo de usar el rendimiento rel="noreferrer"> href="http://msdn.microsoft.com/en-us/library/aa969767.aspx" . Suponiendo una carga pesada gráfica está causando la desaceleración, esto debe darle un poco de ayuda en cuanto a lo que podría necesitar ser simplificada (por ejemplo, diseños) o eliminados (por ejemplo, efectos de mapa de bits (estos son un asesino Potencia del clásico, aunque no quiero a los prejuicios el perfilado!)).
Otros consejos
Si es la WPF que está causando la desaceleración
Probablemente no;)
Es mucho más probable que se trata de su código que hace que la desaceleración. WPF es poderosa, pero hay que entender los conceptos básicos para que funcione bien ... Usted debe echar un vistazo a este vídeo de una sesión de PDC, que ofrece un montón de consejos sobre cómo hacer que su aplicación WPF más rápido
Convierta sus imágenes vectoriales XAML de botones en imágenes PNG transparentes.La ruta y las formas son muy difíciles de renderizar, calcular y cambiar de tamaño.Principalmente después de la implementación, las imágenes nunca cambian; es mejor tenerlas como rasterizadas y luego como vectoriales, a menos que desee realizar una animación fluida con cambios de forma, tamaño u otros atributos.
Las cuadrículas son administradores de diseño muy costosos en comparación con Canvas y DockPanel.Ciertamente, a veces puedes pensar en reemplazar ciertas rejillas con DockPanel, pero sí, no es una solución fácil y requiere mucha lluvia de ideas.
Evite el panel con un solo niño.Intente reducir la jerarquía visual.
Utilice más tamaños fijos para botones y elementos tan pequeños; si especifica tamaños fijos de elementos secundarios, será más fácil para los paneles realizar el procesamiento de diseño.
WPF rendimiento depende en gran medida de la calidad de la tarjeta de vídeo en la máquina más que el procesador / memoria. tarjeta de video mala = mal desempeño de WPF.
Bueno, esto es un tiro largo : cuando he instalado VSTS 2010 (y utiliza WPF) era muy lento en un servidor Windows 2008 con suficiente CPU / memoria , y muy rápido en un cuaderno más modesto. Hemos conseguido desactivar la aceleración de hardware y se convirtió rápidamente en particular esa máquina.
Tal vez usted quiere probar esta configuración, ya que es muy sencillo: Visual Studio 2010 Beta 2 rendimiento editor de corrección que se ejecuta en una máquina virtual
En general, WPF se perfoming mucho peor en el rendimiento del dibujo de las formas de Windows, y GDI nativo o DirectX.
Sí, WPF es de gran alcance en el sentido de que puede hacer un poco de cosas muy buenas que no es compatible con GDI, pero es más lento.
Si tiene mucho que ver el dibujo, y quiere apoyarlo en hardware lento, y luego WPF no es una buena opción.