- 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
C'est un cas notable.
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