La navigation rapide avec un vilebrequin chromé
lun, 13/12/2010 - 12:33
Google est tout fier de Cranshaft, le moteur Javascript V8 de son navigateur Chrome et a communiqué à ce sujet dans un billet de blog. D'après Moutain View les performances sont améliorées de moitié avec ce nouveau moteur pour ce qui est des "pages courantes" et offrent jusqu'à 12% d'amélioration pour les pages contenant des script volumineux.
Ce billet de blog est très intéressant car il explique l'architecture du compilateur Just-in-Time de Crankshaft. Crankshaft n'est pas constitué tout d'un bloc, mais au contraire de 4 parties, 2 compilateurs, un profileur et un "désoptimisateur".
- un compilateur de base, qui compile rapidement sans s'occuper d'optimisations pointues. Cette phase de compilation est présentée comme 2 fois plus rapide que la version précédent, tout ne générant 30% de moins de volume de code.
- un profileur qui identifie les zones du code a utilisation intensive, le "hot code"
- un compilateur optimiseur qui va optimiser de façon poussée le hot code précédemment identifié, au moyen de l'arsenal classique, inlining, registering, sortie du code invariant des corps de boucles, etc.
- et enfin un désoptimisateur... son rôle est de permettre à l'optimiseur d'être très optimiste en ce qui concerne les optimisations. Et si au cours de son travail le système s'aperçoit que finalement le gain sera faible, l'optimisation est abandonnée et le code est repassé au compilateur de base.
Une architecture qui est donc complexe, mais dont la valeur a été reconnue dans un billet de blog de David Mandelin de Mozilla. Ceci non sans préciser que la Mozilla est capable elle aussi de très bien faire en ce domaine et que dès le début de l'année prochaine des travaux seront engagés pour développer Tracemonkey.