25 puntos por xguru 2024-06-28 | 2 comentarios | Compartir por WhatsApp
  • 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

 
ragingwind 2024-06-28

Es un caso que vale la pena destacar.

 
xguru 2024-06-28

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