Apple utilisera LLVM pour accélérer le JavaScript dans Safari

Après tout, pourquoi réinventer la roue ?
Logiciel 3 min
Apple utilisera LLVM pour accélérer le JavaScript dans Safari

Apple travaille actuellement sur l’utilisation du compilateur LLVM pour Safari. Cela devrait permettre à terme une hausse assez importante des performances du JavaScript, mais pas nécessairement dans tous les cas. Explications.

safari webkit

JavaScript : une exécution en fonction du contexte 

Le JavaScript est devenu un composant essentiel du web moderne depuis plusieurs années. Il est au cœur du renouveau des sites car il permet de créer de très nombreuses actions automatisées et dynamiques, les développeurs pouvant offrir à leurs pages des comportements proches de ce que l’on peut trouver dans des logiciels. Comme tout langage de script, il est d’abord interprété, mais peut bénéficier d’autres prises en charge, notamment à travers la compilation.

 

L’objectif de cette compilation est simple : augmenter les performances. Il en existe cependant plusieurs types, adaptés à des situations différentes. Tous les navigateurs possèdent par exemple un compilateur JIT (Just-in Time) pour produire un code exécutable. Ce dernier est plus rapide mais nécessite un peu de temps pour être produit. Dans le cas du moteur WebKit équipant Safari (versions classique et mobile), il ne s’active que pour des fonctions appelées au moins 6 fois ou reprises 100 fois dans une boucle. Le code produit est environ 10 fois plus performant que l’interprété.

 

Mais, toujours dans le cas de WebKit, une fonction peut être appelée beaucoup plus souvent et être envoyée vers un autre type de compilation JIT. Il faut que ladite fonction soit appelée plus de 66 fois ou répétée plus de 1 000 dans une boucle. Cette compilation prend plus de temps et produit un code exécutable environ 3 fois plus performant que le précédent, donc 30 fois plus rapide que le code interprété.

Un quatrième mode passant par LLVM 

Dans un billet explicatif, les développeurs de WebKit précisent cependant deux éléments importants. D’une part, l’optimisation continuelle du code vise à produire des performances aussi proches que possibles de ce que produit du C++ ou de l’Objective-C. D’autre part, plus les travaux avançaient sur la compilation au sein de WebKit, plus les développeurs se rendaient compte qu’ils réinventaient la roue.

 

L’idée est donc simple : déverrouiller un quatrième palier et utiliser le compilateur de LLVM. Ce dernier est plus lent mais son objectif est de produire un code particulièrement optimisé, pas de compiler rapidement. Les résultats attendus dans ce mode, nommée FTL (Fourth Tier LLVM), sont de l’ordre de 40 fois les performances du code interprété. Cependant, puisque le travail de compilation est plus long, il est réservé aux fonctions nécessitant plus de 10 millisecondes pour être exécutées ou appelées un nombre exceptionnel de fois.

 

Outre l’amélioration des performances que ces travaux amèneront à terme, il est intéressant de constater comment l’utilisation d’un compilateur peut continuer à accélérer la convergence entre le web et le natif. LLVM est en effet avant tout une plateforme de compilation dédié au C, au C++ et à l’Objective-C. Elle est largement utilisée depuis plusieurs années par Apple pour le développement des applications sous OS X et iOS. Son intégration dans WebKit renforce encore l’intérêt du JavaScript pour les développeurs.

Toujours plus de convergence 

On notera cependant que si Apple travaille sur un tel projet, il y a de fortes chances que les concurrents aient des améliorations similaires dans leurs cartons. La vitesse d’exécution du JavaScript est en effet un élément primordial de comparaison car elle participe très largement aux performances générales du navigateur. Or, cette sensation de « légèreté » est devenue pour beaucoup le premier critère de choix, avant même les fonctionnalités et surtout la sécurité. Microsoft et Google n’ont donc sans doute pas dit leur dernier mot.

 

Ceux qui souhaitent tester la dernière révision de WebKit pourront se tourner vers les Nightly Builds. Attention cependant, elles ne sont disponibles que sous la forme de sources et de binaires pour OS X. Par ailleurs, elles peuvent se montrer très instables mais n’écrasent aucun composant stable (Safari reste à sa place).

Vous n'avez pas encore de notification

Page d'accueil
Options d'affichage
Abonné
Actualités
Abonné
Des thèmes sont disponibles :
Thème de baseThème de baseThème sombreThème sombreThème yinyang clairThème yinyang clairThème yinyang sombreThème yinyang sombreThème orange mécanique clairThème orange mécanique clairThème orange mécanique sombreThème orange mécanique sombreThème rose clairThème rose clairThème rose sombreThème rose sombre

Vous n'êtes pas encore INpactien ?

Inscrivez-vous !