- A medida que el proyecto se volvió cada vez más complejo, también crecieron mucho los recursos necesarios para las pruebas de rendimiento, por lo que hizo falta un nuevo sistema de pruebas.
- Querían un sistema de pruebas ideal que ejecutara pruebas para todos los cambios de código, terminara en menos de 10 minutos y permitiera analizar los resultados en detalle.
- El rendimiento de Figma estaba afectado principalmente por la CPU y la GPU, y tras considerar las ventajas y desventajas de varios enfoques, lo estructuraron en dos grandes sistemas.
- Sistema basado en la nube
- Usan VMs con GPU que ejecutan Headless Chromium para correr pruebas en paralelo y así lograr que terminen en menos de 10 minutos.
- Como las VMs son propensas a verse afectadas por factores externos, dejan un margen de alrededor del 20%.
- Sistema basado en hardware
- Programan todas las pruebas para ejecutarse de forma secuencial en un sistema compuesto por laptops antiguas (MacBooks viejas, laptops Windows, Chromebooks, etc.).
- Las pruebas tardan más, pero permiten rastrear en detalle cambios sutiles de rendimiento que aparecen en dispositivos reales.
- Después de construir estos dos sistemas de prueba, lograron resultados positivos en sus esfuerzos por mejorar el rendimiento.
- Mejora del rendimiento de renderizado
- Trabajaron para mejorar el rendimiento de renderizado en entornos donde la GPU no va acompañada de una CPU moderna.
- Tras investigar en detalle con pruebas de estrés, descubrieron que algunas funciones estaban generando una gran sobrecarga en cierto hardware.
- Dividieron el tiempo de renderizado con mayor detalle e implementaron un nuevo algoritmo que prioriza el trabajo local, mejorando de forma efectiva el rendimiento en hardware antiguo.
- Mejora del rendimiento de FigJam
- Escribir las pruebas fue difícil, pero pasaron de corregir problemas a partir de consultas de clientes o métricas existentes a poder detectarlos y resolverlos con anticipación mediante pruebas.
- También pudieron descubrir y corregir problemas difíciles de detectar, como diferencias sutiles de rendimiento en CSS, repitiendo las pruebas decenas de veces.
- En particular, fue útil poder rastrear con precisión qué cambios de código provocaban una degradación del rendimiento.
- La mejora del rendimiento es un área complicada, pero como muchas veces lo que uno imagina no coincide con la realidad, las pruebas y la medición del rendimiento son muy importantes.
2 comentarios
Está bien que hayan mejorado el rendimiento con pruebas, pero... igual Figma sigue pareciéndome terriblemente lento.
En los comentarios de HN también hay bastantes quejas de que es increíblemente lento. -_-
Sobre todo siento que se volvió muchísimo más lento desde que Adobe lo adquirió (antes era más rápido de lo que uno esperaría...)
¿Será solo una idea mía?
Resumen con IA del hilo de HN