- El equipo de Google Sheets ha estado colaborando desde que anunció en 2022 el uso de WasmGC en Chrome
- Esto sienta un precedente para que las aplicaciones de Google se ejecuten sobre WasmGC
- Problema: JavaScript
- El motor de cálculo de Google Sheets fue escrito originalmente en Java y lanzado en 2006, y todos los cálculos se realizaban en el servidor
- Desde 2013 se ejecuta en el navegador usando JavaScript
- Primero usaron Google Web Toolkit (GWT) y después el transpiler de Java a Closure JavaScript (J2CL)
- El motor de cálculo en JavaScript se ejecuta en un Web Worker y se comunica con el hilo principal mediante
MessageChannel
- La versión en JavaScript es más de 3 veces más lenta que la versión en Java
- Por qué JavaScript es más lento que Java
- JavaScript es un lenguaje dinámico y, aunque los compiladores JIT han mejorado su rendimiento, todavía tiene limitaciones
- Su tipado flexible y comportamiento dinámico dificultan generar código óptimo
- TypeScript también solo facilita el desarrollo y no ofrece las garantías necesarias para la optimización
- Solución: WasmGC
- Una extensión de WebAssembly que añade las capacidades necesarias para compilar lenguajes con recolección de basura
- Permite ejecutar en la web lenguajes como Java a velocidades casi nativas
- Se espera que tenga un impacto aún mayor que Wasm para C++
- Colaboración entre Google Workspace y Chrome
- Comenzaron a colaborar desde finales de 2020 para evaluar WasmGC
- Eligieron el motor de cálculo de Sheets como caso de prueba ideal
- El equipo de V8 y los contribuidores de Binaryen (toolchain de optimización de WASM) se encargaron del runtime de WasmGC y de las optimizaciones AOT
- Proceso de optimización
- La versión inicial era 2 veces más lenta que JavaScript, pero se siguió optimizando de forma continua
- Replicaron técnicas clave de optimización de la JVM y V8 (solo aplicar despacho de métodos virtuales, speculative inlining y devirtualization mejoró la velocidad en 40%)
- Aprovecharon APIs del navegador altamente optimizadas (por ejemplo, el procesamiento de expresiones regulares mejoró 100 veces)
- Eliminaron patrones de código especializados para JavaScript
- Conclusión
- WasmGC es una tecnología con potencial para hacer evolucionar la forma de desarrollar aplicaciones web
- A futuro se espera que WasmGC soporte multithreading con memoria compartida y mejore el rendimiento de un solo hilo
- Recomiendan a todos los desarrolladores web usar WasmGC en proyectos de alto rendimiento
2 comentarios
Es un caso que vale la pena destacar.
En conclusión, no se menciona cuánto mejoró el rendimiento al portar de JavaScript a WasmGC, pero en el artículo de abajo dicen que se volvió 2 veces más rápido.
Doubling calculation speed and other new innovations in Google Sheets
Referencia: La recolección de basura de WebAssembly (WasmGC) ya está habilitada de forma predeterminada en Chrome