wpf performance

¿Cómo acelerar los programas de WPF?



performance (9)

¿Intenta utilizar el WPF PerfTool en lugar del que está en VS?

Me encanta programar con y para Windows Presentation Framework. Sobre todo escribo aplicaciones tipo navegador usando WPF y XAML.

Pero lo que realmente me molesta es la lentitud de WPF. Una página simple con solo unos pocos controles se carga lo suficientemente rápido, pero tan pronto como una página es un poco más compleja, como contener muchos campos de entrada de datos, uno o dos controles de pestañas, y cosas así, se vuelve doloroso.

La carga de dicha página puede tomar más de un segundo. Segundos, de hecho, especialmente en computadoras no tan rápidas (léase: las computadoras de los clientes) puede llevar años.

Lo mismo con los valores cambiantes en la página. Todo sobre la interfaz de usuario de WPF es de alguna manera sluggy.

¡Esto es tan malo! Me dan este hermoso marco, pero lo hacen tan insoportablemente lento, ¡así que tendré que disculparme con nuestros clientes todo el tiempo!

Mi pregunta:

  1. ¿Cómo se acelera WPF?
  2. ¿Cómo perfilas los cuellos de botella?
  3. ¿Cómo lidias con la lentitud?

Dado que esto parece ser un problema universal con WPF, estoy buscando consejos generales, útiles para muchas situaciones y problemas.

Algunas otras preguntas relacionadas:


WPF está diseñado para computadoras con tarjetas gráficas modernas. ¿Sus clientes tienen tarjetas gráficas modernas capaces de ejecutar Aero? Si sus clientes tienen tarjetas gráficas antiguas, WPF recurrirá a la prestación de software, que es extremadamente lenta en comparación con los gráficos acelerados por hardware.

También es posible que desee perfilar su aplicación para asegurarse de que en realidad es WPF la parte lenta. Es posible que haya algo más que sea realmente el cuello de botella.


evitar animaciones también ayuda mucho a veces. si tiene que usar animaciones, disminuya la velocidad de cuadros, esto mejorará el rendimiento "de gran alcance"


puedes dar mas detalles?

Solo noté un rendimiento lento cuando utilizo algo así como una vista de lista o una cuadrícula que tiene cierta complejidad. La solución es simplificarlo.

Aparte de eso, solo noté un rendimiento lento al cargar la aplicación por primera vez.

HTH


Elimina efectos de transparencia alfa / mapa de bits.


Encuentro útil dar un paso al costado del XAML y escribir toda la UI en C #. Esto me permite controlar con precisión cuándo se crean y cargan los controles. También me ayuda a entender lo que XAML está haciendo "bajo las sábanas".




  1. ¿Cómo se acelera WPF?

    A menudo, después de usar una de las siguientes herramientas de creación de perfiles, es obvio lo que está causando mis cuellos de botella.

    • Si la memoria es el problema, virtualizo mis datos.
    • Si el problema es el tiempo de renderizado, virtualizo los controles o simplifico las plantillas de control siempre que sea posible.
    • Si el problema es el tiempo de procesamiento, intento mejorar mi algoritmo o mover ese trabajo a un hilo de fondo y mostrar un latido en mi interfaz de usuario mientras el trabajo está en marcha.

  2. ¿Cómo perfilas los cuellos de botella?

  3. ¿Cómo lidias con la lentitud?

    Perfilado y asesoramiento.