Ya está disponible Xojo 2019r1, incorporando más de 200 mejoras sobre la anterior edición. Una de dichas mejoras se corresponde con una de las demandas realizadas por muchos usuarios: la mejora del rendimiento en el Editor de Diseño, especialmente cuando este se compone de una buena cantidad de controles. A continuación se reproduce, traducida al Español, la entrada escrita por Geoff Perlman (CEO de Xojo) y que se ha publicado originalmente en el blog oficial de Xojo. Sigue leyendo para conocer todos lo detalles.
Durante más años de los que me gustaría admitir, el Editor de Diseño ha sido lento a la hora de mover los controles. A medida que añades más controles, es peor. En el caso de los diseños Web, ha venido siendo incluso peor. Esto es principalmente porque en un diseño web hemos de dibujar todo, mientras que en un diseño Desktop es el sistema operativo el encargado de dibujar los controles por nosotros.
En una reunión de ingenieros mencioné una conversación que tuve con un usuario en torno a la velocidad del Editor de Diseño, y Travis dijo que a él también le habían recordado recientemente lo lento que era dicho Editor. Si bien en la mayoría de las ocasiones, los problemas en Xojo se calculan y priorizan para que proporcionen un mayor impacto por el coste (como solemos decir aquí), no siempre es como ocurre. Tras la reunión, Travis decidió sumergirse en el código del Editor de Diseño y ver qué podía hacerse para acelerarlo.
Los resultados son ciertamente significativos.
El vídeo cuenta mejor la historia.
La diferencia es aun mayor para diseños con muchos controles.
Para optimizar la velocidad hemos hecho dos cambios:
- En todas las plataformas, la selección y arrastre de controles sólo redibuja aquellos controles que se han seleccionado. Se toma una imagen cacheada (picture) de todo excepto los controles seleccionados, y por tanto sólo han de dibujarse los controles seleccionados sobre esta a medida que se mueven. Esta es una mejora sobre el modo en el que se hacía anteriormente, donde se redibujaba cada control en cada frame tanto si se movía como si no.
- La segunda optimización es específica para el Mac. macOS requiere de más tiempo en el dibujado y composición de algunos controles. En particular, los controles como los Group Box pueden llevar más tiempo cuando se utiliza el Modo Oscuro. Ahora mantenemos una copia cacheada de cada control renderizado por el sistema operativo, y la utilizamos excepto que cambie su tamaño o propiedades. De ese modo no necesitamos esperar a que macOS dibuje el control cada vez que queremos mostrarlo o moverlo en la pantalla.
Si tienes diseños con muchos controles, echa un vistazo a la release 2019r1. Te llevarás una agradable sorpresa.