25 points par xguru 2024-06-28 | 2 commentaires | Partager sur WhatsApp
  • L’équipe Google Sheets collabore avec Chrome depuis l’annonce, en 2022, de l’utilisation de WasmGC dans Chrome
  • Cela a créé un précédent pour exécuter les applications de Google sur WasmGC
  • Problème : JavaScript
    • Le moteur de calcul de Google Sheets a été initialement écrit en Java et lancé en 2006, avec tous les calculs effectués côté serveur
    • À partir de 2013, il a été exécuté dans le navigateur en utilisant JavaScript
      • D’abord avec Google Web Toolkit (GWT), puis plus tard avec le transpileur Java vers Closure JavaScript (J2CL)
    • Le moteur de calcul JavaScript s’exécute dans un Web Worker et communique avec le thread principal via MessageChannel
    • La version JavaScript est plus de 3 fois plus lente que la version Java
  • Pourquoi JavaScript est plus lent que Java
    • JavaScript est un langage dynamique dont les performances ont été améliorées par les compilateurs JIT, mais il reste soumis à des limites
    • Son typage souple et son comportement dynamique compliquent la génération d’un code optimal
    • TypeScript facilite le développement, mais n’apporte pas les garanties nécessaires à l’optimisation
  • Solution : WasmGC
    • Une extension de WebAssembly qui ajoute les fonctionnalités nécessaires à la compilation des langages avec garbage collection
    • Elle permet d’exécuter sur le Web des langages comme Java à une vitesse proche du natif
    • Son impact pourrait être encore plus important que celui de Wasm pour C++
  • Collaboration entre Google Workspace et Chrome
    • La coopération a commencé fin 2020 pour évaluer WasmGC
    • Le moteur de calcul de Sheets a été choisi comme cas de test idéal
    • L’équipe V8 et les contributeurs de Binaryen (toolchain d’optimisation WASM) se sont chargés du runtime WasmGC et des optimisations AOT
  • Processus d’optimisation
    • La version initiale était 2 fois plus lente que JavaScript, mais les optimisations se poursuivent
    • Reproduction des principales techniques d’optimisation de la JVM et de V8 (l’application du virtual method dispatch, de la speculative inlining et de la devirtualization a, à elle seule, apporté un gain de 40 %)
    • Exploitation d’API navigateur hautement optimisées (par exemple, traitement des expressions régulières 100 fois plus rapide)
    • Suppression des patterns de code spécifiques à JavaScript
  • Conclusion
    • WasmGC est une technologie qui a le potentiel de faire évoluer la manière de développer des applications Web
    • À l’avenir, on attend de WasmGC la prise en charge du multithreading à mémoire partagée ainsi qu’une amélioration des performances en single-thread
    • Son usage est recommandé à tous les développeurs Web pour les projets à hautes performances

2 commentaires

 
ragingwind 2024-06-28

C'est un cas notable.

 
xguru 2024-06-28

En conclusion, rien n’est dit sur le gain de vitesse obtenu en portant JavaScript vers WasmGC, mais dans l’article ci-dessous, il est indiqué que cela a doublé.
Doubling calculation speed and other new innovations in Google Sheets

Référence : Le ramasse-miettes de WebAssembly (WasmGC) est désormais activé par défaut dans Chrome