Estoy dibujando un montón de líneas en un lienzo largo (creo stripchart) y lo ajuste bastante bien para el rendimiento, utilizando las clases de geometría de bajo nivel y la congelación, etc. Esto mejoró dramáticamente el rendimiento, pero aún lleva unos segundos cargar algunos miles de elementos en el lienzo. Ejecuté un análisis de rendimiento en la aplicación, y parece que un gran porcentaje del tiempo lo toma cada llamada al canvas.children.add()
. He leído que esto debería ser una llamada ligera, y como la estoy llamando varias veces en un método, no debería tratar de hacer algo pesado entre ellos ... ¿Podría haber alguna otra razón por la que esto podría estar tomando? ¿mucho tiempo? ¿Y de alguna manera podría acelerarlo?WPF lienzo rendimiento- children.add llamado muchas veces
El rendimiento no es terrible, pero me temo que podría convertirse en un problema más adelante cuando necesite manejar conjuntos más grandes de datos.
Solo como referencia, parece que se llama 1400 veces en esta muestra y tarda casi 3 segundos de tiempo de CPU en una computadora portátil moderna/rápida.
El lienzo está contenido en una jerarquía de otros controles, por lo que tengo curiosidad de si podrían estar contribuyendo a esto.
Nota adicional: tampoco estoy estableciendo una altura específica en el lienzo, ya que está configurado para llenar el contenedor padre de la cuadrícula. ¿Podría ser esto una fuente de problemas?
En lo que respecta al rendimiento, puede intentar http : //msdn.microsoft.com/en-us/library/system.windows.media.streamgeometry.aspx Stream Geometry, que es la construcción más ligera que el contexto de dibujo. –
sí, ya está usando la geometría del flujo y con buenos resultados. gracias –