Firefox 58 a un compilateur WebAssembly à deux niveaux

Par:
fredericmazue

jeu, 18/01/2018 - 17:22

Firefox 57, qui est sorti il y a deux mois, a apporté d'impressionnantes améliorations de performances grâce à son moteur de rendu multi-processus Quantum. Avec Firefox 58, qui sortira le 23 janvier, la fondation Mozilla continue d'améliorer les performances, cette fois au niveau de la compilation du code WebAssembly.

Cette compilation sera désormais faite par un compilateur à deux niveaux.

Le premier niveau compile en streaming, ou en continu. Cela signifie que le code est compilé au fur et à mesure qu'il est téléchargé, et non plus comme précédemment, après qu'il soit téléchargé. Ceci est rendu possible par le fait que WebAssembly peut être compilé ligne par ligne.

La deuxième niveau est la (re)compilation du code par un compilateur optimiseur. Cette deuxième étape est plus longue. Le compilateur en streaming compile 10 à 15 fois plus vite que le compilateur optimiseur.

Lorsque la compilation en streaming est terminée, l'exécution démarre immédiatement, et la deuxième étape de compilation avec optimisations se fait en arrière plan. Lorsque la deuxième étape est terminée, les deux images sont échangées en mémoire. Ainsi l'exécution qui est déjà très performante avec WebAssembly est accélérée à ce moment.

"Nous compilons le code plus rapidement que le réseau ne fournit les paquets" assure Mozilla qui souligne que son compilateur en streaming compile de 30 à 60 Mo de code par seconde sur un ordinateur de bureau et 8 Mo de code sur un terminal mobile aux caractéristiques moyennes.