Apple utilisera LLVM pour accélérer le JavaScript dans Safari
Après tout, pourquoi réinventer la roue ?
Le 16 mai 2014 à 12h10
4 min
Logiciel
Logiciel
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.
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).
Apple utilisera LLVM pour accélérer le JavaScript dans Safari
-
JavaScript : une exécution en fonction du contexte
-
Un quatrième mode passant par LLVM
-
Toujours plus de convergence
Commentaires (60)
Vous devez être abonné pour pouvoir commenter.
Déjà abonné ? Se connecter
Abonnez-vousLe 16/05/2014 à 15h18
Le 16/05/2014 à 15h22
Le 16/05/2014 à 15h33
Le 16/05/2014 à 15h36
On peut pas ban les spoilers là ???? " />
Le 16/05/2014 à 15h43
Le 16/05/2014 à 15h48
Le 16/05/2014 à 15h49
Le 16/05/2014 à 15h49
Le 16/05/2014 à 15h54
Le 16/05/2014 à 16h01
Le 16/05/2014 à 16h06
Le 16/05/2014 à 16h09
Le 16/05/2014 à 16h11
Le 16/05/2014 à 16h12
Le 16/05/2014 à 16h14
Le 16/05/2014 à 16h20
Le 16/05/2014 à 14h25
Le 16/05/2014 à 14h26
Le 16/05/2014 à 14h29
Le 16/05/2014 à 14h31
Le 16/05/2014 à 14h36
Le 16/05/2014 à 14h41
Le 16/05/2014 à 14h56
Le 16/05/2014 à 14h57
Le 16/05/2014 à 15h00
Le 16/05/2014 à 15h06
Le 16/05/2014 à 15h08
Le 16/05/2014 à 15h09
Le 16/05/2014 à 15h09
Le 16/05/2014 à 15h12
Le 16/05/2014 à 15h14
Le 16/05/2014 à 15h17
Le 16/05/2014 à 16h21
Ce qui est paradoxal, c’est qu’on utilise de plus en plus un langage qui peut être désactivé dans le navigateur " />
Le 16/05/2014 à 16h22
Le 16/05/2014 à 16h23
Le 16/05/2014 à 16h30
Le 16/05/2014 à 16h37
Le 16/05/2014 à 16h57
Le 16/05/2014 à 17h37
Le 16/05/2014 à 18h51
Le 16/05/2014 à 19h44
Le 17/05/2014 à 06h33
Au temps pour moi… Je savais déjà que l’Amiga surpassait l’Atari et OSX Windows, aussi bien qu’un mariage pour tous en Palestine entre végétariens membres de la Commission Européenne travaillant pour la RIAA.
Histoire de recarder un peu le sujet et de relancer le débat sur des bases apaisées. " />
Le 17/05/2014 à 08h00
Le 17/05/2014 à 08h50
Le 17/05/2014 à 10h19
Le 17/05/2014 à 10h37
Le 17/05/2014 à 17h14
Apple copie sur Microsoft. Microsoft avait déjà eu l’idée d’optimiser Javascript dans Internet Explorer il y a 2 ans.
http://blogs.msdn.com/b/ie/archive/2012/06/13/advances-in-javascript-performance…
Le 18/05/2014 à 16h55
Le 16/05/2014 à 12h32
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.
Je dirais plus qu’il essaie de rattraper leur retard sur les autres.
Le 16/05/2014 à 12h34
Ca serait génial si on pouvait avoir un test de la part de NXI comparant les différents navigateurs à l’instar de celui qu’on a eu pour comparer les messageries.
Le 16/05/2014 à 12h40
Le 16/05/2014 à 13h02
Le 16/05/2014 à 13h06
Le 16/05/2014 à 13h07
Le 16/05/2014 à 13h12
Le 16/05/2014 à 13h29
Le 16/05/2014 à 13h43
Le 16/05/2014 à 13h50
Le 16/05/2014 à 13h54
Le 19/05/2014 à 08h41