25 pontos por xguru 2024-06-28 | 2 comentários | Compartilhar no WhatsApp
  • A equipe do Google Sheets vem colaborando desde o anúncio do uso de WasmGC no Chrome em 2022
  • Isso criou um precedente para que os apps do Google rodem em WasmGC
  • Problema: JavaScript
    • O mecanismo de cálculo do Google Sheets foi originalmente escrito em Java e lançado em 2006, com todos os cálculos sendo feitos no servidor
    • Desde 2013, ele passou a rodar no navegador usando JavaScript
      • Primeiro com Google Web Toolkit (GWT) e depois com o transpiler de Java para Closure JavaScript (J2CL)
    • O mecanismo de cálculo em JavaScript roda em um Web Worker e se comunica com a thread principal por meio de MessageChannel
    • A versão em JavaScript é mais de 3 vezes mais lenta que a versão em Java
  • Por que JavaScript é mais lento que Java
    • JavaScript é uma linguagem dinâmica e teve seu desempenho melhorado por compiladores JIT, mas ainda tem limitações
    • Tipagem frouxa e comportamento dinâmico dificultam a geração de código ideal
    • O TypeScript também só facilita o desenvolvimento e não oferece as garantias necessárias para otimização
  • Solução: WasmGC
    • Uma extensão do WebAssembly que adiciona os recursos necessários para compilar linguagens com coleta de lixo
    • Permite executar linguagens como Java na web com velocidade quase nativa
    • Espera-se que tenha um impacto ainda maior do que o Wasm para C++
  • Colaboração entre Google Workspace e Chrome
    • A parceria para avaliar o WasmGC começou no fim de 2020
    • O mecanismo de cálculo do Sheets foi escolhido como alvo ideal de testes
    • A equipe do V8 e os contribuidores do Binaryen (toolchain de otimização de WASM) ficaram responsáveis pelo runtime do WasmGC e pelas otimizações AOT
  • Processo de otimização
    • A versão inicial era 2 vezes mais lenta que JavaScript, mas otimizações contínuas foram realizadas
    • Técnicas centrais de otimização da JVM e do V8 foram replicadas (só a aplicação de virtual method dispatching, speculative inlining e devirtualization trouxe ganho de 40% em velocidade)
    • Uso de APIs de navegador altamente otimizadas (ex.: processamento de expressões regulares 100 vezes mais rápido)
    • Remoção de padrões de código específicos de JavaScript
  • Conclusão
    • O WasmGC é uma tecnologia com potencial para evoluir a forma de desenvolver aplicações web
    • No futuro, espera-se que o WasmGC ofereça suporte a multithreading com memória compartilhada e melhore o desempenho em thread única
    • Recomendação para todos os desenvolvedores web: usar WasmGC em projetos de alto desempenho

2 comentários

 
ragingwind 2024-06-28

É um caso que merece atenção.

 
xguru 2024-06-28

No fim das contas, não há nenhuma informação sobre o quanto ficou mais rápido ao portar de JavaScript para WasmGC, mas no texto abaixo diz que ficou 2 vezes mais rápido.
Doubling calculation speed and other new innovations in Google Sheets

Referência: WebAssembly garbage collection (WasmGC) agora está ativado por padrão no Chrome