2010-03-08 8 views
8

Un proyecto en el que estoy trabajando tiene problemas de rendimiento menores. Nuestro equipo está realizando muchas pequeñas mejoras para lograr mayores ganancias en el rendimiento. Hemos logrado ayudar a la aplicación con algunos cambios más obvios, y hemos considerado el enlace de datos para proporcionar algunas mejoras adicionales. Sé que el modo de enlace predeterminado es TwoWay, pero la mayoría de nuestros enlaces no requieren enlace TwoWay. ¿Valdría la pena el tiempo para pasar y especificar explícitamente el modo como OneWay donde hemos aceptado el valor predeterminado?¿Existe algún beneficio en el rendimiento al especificar explícitamente el enlace OneWay cuando se configuran enlaces en WPF?

+0

Existen algunas situaciones de enlace de datos reconocidas por Microsoft como causantes de fugas de memoria según este error: http://support.microsoft.com/kb/938416 – jeffora

Respuesta

4

Lo sentimos, la primera versión es 100% incorrecta (gracias, @Jeffora). Lo guardo aquí, de lo contrario los comentarios no tienen sentido.

Un enlace unidireccional no necesita establecer una conexión con la fuente para escuchar las notificaciones de cambio, por lo que requiere menos memoria, pero en lo que respecta a la velocidad, no creo que haya una diferencia .

Segunda versión: Tanto los enlaces OneWay como TwoWay se suscriben a la fuente de cambios para actualizar la propiedad de destino. Por lo tanto, la diferencia en el rendimiento es la actualización de la propiedad de origen, que podría tener un impacto, dependiendo de lo que haga el resto del software cuando se produzca la actualización.

Si el rendimiento es crítico y su escenario no necesita actualizaciones de destino, usar el enlace OneTime podría ser una opción.

Aprovecho la oportunidad de esta corrección para preguntar si usted perfiló su aplicación, con el fin de encontrar puntos de acceso. La regla 80/20 (o evento 90/10) es bastante frecuente, es decir, una pequeña cantidad de cuentas de código durante la mayor parte del tiempo invertido. Sin saberlo, los esfuerzos de optimización podrían no obtener ninguna ganancia en absoluto.

+0

Interesante. Entonces, si estamos hablando de cientos de enlaces de ese tipo, es concebible que el cableado de esos eventos de escucha acabe con los ciclos de CPU al crear la ventana. Entonces, podría ser que haya una velocidad y un golpe de memoria, ¿correcto? – Kilhoffer

+0

Correcto, estaba descontando el tiempo necesario para esta configuración de conexión, pero con miles de ellos, pueden ser importantes. – Timores

+1

Un enlace unidireccional aún escucha el origen para la notificación de cambio; un enlace de un solo uso no lo hace. – jeffora

Cuestiones relacionadas