Cet article décrit une partie des optimisations de performances réalisées pour le moteur Chakra, ainsi que les résultats des benchmarks Octane et Jet Stream pour Edge, Chrome et Firefox.
Comme détaillé dans Point de vue d'un développeur sur Microsoft Edge, le fabricant de navigateur de Redmond a changé d'attitude concernant les technologies web, les standards web et la compatibilité avec les autres navigateurs. Non seulement ont-ils abandonné certaines anciennes fonctionnalités d'Internet Explorer, mais ils ont aussi choisi d'implémenter à la lettre les standards HTML, JavaScript et CSS avec leur nouveau moteur, tout en se concentrant sur un problème historique : les performances.
Les principaux problèmes de performances d'Internet Explorer étaient liés au traitement du JavaScript et Microsoft en a résolu plusieurs avec la nouvelle version de Chakra disponible dans Edge. Voici une rapide présentation de certaines de ces améliorations (plus de détails ici et ici) :
- Chakra a un nouveau compilateur JIT Simple qui réalise moins d'optimisations et peut donc exécuter le code plus tôt. Le profiling continue et le moteur devrait passer en JIT complet lorsque celui-ci sera disponible. Le JIT Simple tourne aussi en arrière plan.
- Selon le matériel sous-jacent, Chakra peut démarrer plusieurs threads de JIT, ce qui permet une compilation plus rapide. Grâce à cela, TypeScript est maintenant 30% plus rapide.
- Le dernier passage du GC peut maintenant être fait aussi bien sur le thread principal que dans le thread du GC, permettant ainsi de réduire les interruptions et d'améliorer les temps de passage de 48%.
- Le surcoût d'inlining du code a été réduit en utilisant des données statiques.
- Chakra autorise maintenant les opérations d'inline inter-fichiers.
- La nouvelle variable
const
d'ES6 permet aux compilateurs d'économiser des vérifications de modification de variables. Pour les applications web qui n'utilisent pasconst
, Chakra peut identifier les variables globales qui ne changent pas et les traiter comme desconst
, économisant ainsi en temps d'accès. - Le compilateur JIT est maintenant mieux optimisé pour exécuter du code minifié généré par UglifyJS qui est utilisé par une très grande majorité des 10 000 premiers sites internet.
- Le JIT optimise maintenant le code à l'intérieur d'un block try-catch.
Compte tenu de toutes ces améliorations et optimisations, on peut à juste titre se demander quelle est la vitesse de Edge. Selon Microsoft, Edge est maintenant plus rapide que Chrome et Firefox, à en juger par les graphiques suivants :
(Cliquez sur les images pour les agrandir. Benchmarks réalisés par Microsoft - 64-bit browsers et 64-bit Windows 10 TP on HP Compaq 8100 Elite, i7 860 2.80GHz (4 cores), 12GB RAM.)
Nous remarquons à quel point Edge s'est amélioré par rapport à IE11. Il reste tout de même à voir si Google et Mozilla peuvent ajouter des points supplémentaires pour les benchmarks de leurs navigateurs.