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?
Respuesta
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.
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
Correcto, estaba descontando el tiempo necesario para esta configuración de conexión, pero con miles de ellos, pueden ser importantes. – Timores
Un enlace unidireccional aún escucha el origen para la notificación de cambio; un enlace de un solo uso no lo hace. – jeffora
- 1. VB6 - ¿Se obtiene algún beneficio de rendimiento al usar cadenas de ancho fijo en VB6?
- 2. WPF DataGrid de WPF toolkit vs ListView - ¿algún beneficio?
- 3. ¿Por qué el enlace de datos se rompe en el modo OneWay?
- 4. ¿La expresión regular de Java ofrece algún beneficio de rendimiento?
- 5. ¿Cómo se realiza el enlace de datos bidireccional en WPF?
- 6. ¿Hay algún beneficio al usar SecureString en ASP.NET?
- 7. ¿Hay algún beneficio al usar HtmlHelper en MVC?
- 8. ¿Hay algún beneficio al usar prototipos en lugar de declarar propiedades en el objeto mismo?
- 9. ¿Puedo especificar explícitamente NavigateUrl en un hipervínculo?
- 10. ¿Hay algún beneficio en usar Maven Multimodule cuando se trabaja en una aplicación pequeña?
- 11. Proxy dinámico sin especificar explícitamente el tipo en scala
- 12. ¿OneWay vinculante en WinForms?
- 13. ¿Existe algún riesgo de rendimiento para Collections.unmodifiableList?
- 14. WPF 4.0 Enlace de datos al ContextMenu en el DataGrid
- 15. ¿Hay algún beneficio o inconveniente cuando un constructor implementa otro?
- 16. WPF: Enlace a comandos en el código detrás de
- 17. ¿Cuándo debería especificar explícitamente StructLayout?
- 18. ¿Hay algún beneficio en aprender LISP?
- 19. ¿Hay algún beneficio de rendimiento al usar SQL Server 2008 sobre SQL Server 2005?
- 20. AssemblyInfo.cs: ¿Hay algún punto al especificar un Guid cuando se usa ComVisible (falso)?
- 21. ¿Existe algún beneficio al almacenar un objeto en una variable antes de invocar un método en él?
- 22. ¿Hay algún beneficio para mantener el tamaño de MaxPermSize pequeño?
- 23. ¿Los enlaces simbólicos no funcionan cuando el enlace está hecho en otro directorio?
- 24. Los enlaces de Excel no cargan páginas, pero cuando el enlace se pega en el navegador funciona.
- 25. ¿Se puede especificar el hilo en el que se ejecuta AsyncCallback cuando se utiliza delegate.BeginInvoke?
- 26. ¿Existe algún problema de rendimiento al usar ISNULL() en SQL Server?
- 27. Eliminar el enlace en WPF con el código
- 28. WPF: definir el valor predeterminado de enlace
- 29. PHP: ¿Cuál es el beneficio de spl_autoload_register? Rendimiento de
- 30. ¿Hay algún beneficio real de usar J #?
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