Navigateurs : une comparaison des performances JavaScript

V8, TraceMonkey, SquirrelFish et tout le tralala 62
http world wide web wwwLa guerre des navigateurs est relancée, et à une échelle bien supérieure à l’affrontement entre Internet Explorer et Netscape à l’époque. Depuis que des cendres de ce dernier s’est élevé Firefox, forçant Microsoft à réagir, d’autres ont pris les armes et puisque la bataille a repris, il faut compter aussi sur Opera, Safari et Chrome.

Tous les navigateurs, à l’exception d’Internet Explorer (bien que cela commence à changer), ont misé sur le respect des standards et des recommandations du W3C. Plus récemment, c’est le terrain des performances pures qui a servi aux affrontements, et plus particulièrement les performances JavaScript. Microsoft travaille sur sa machine virtuelle, mais Firefox 3.1 arrivera également avec un nouveau moteur, baptisé TraceMonkey, tandis que Chrome dispose déjà d’une préversion de sa machine V8 et que Safari 4 proposera SquirrelFish Extreme.

Nous avons décidé de passer tous ces navigateurs à travers deux suites de tests DOM/JavaScript : SunSpider, créé par les développeurs du moteur de rendu Webkit, et Dromaeo, créé par ceux de Mozilla. Nous avons pris, quand cela était possible, les dernières versions de chaque navigateur pour tester leurs performances via les nouvelles machines virtuelles JavaScript ajoutées : À noter que pour Firefox 3.1, nous avons mesuré les résultats avec et sans les options de compilation JIT (Just In Time) de TraceMonkey (chercher « jit » dans le about:config).

Voici les résultats obtenus avec SunSpider :
  • Firefox 3.1 avec TraceMonkey : 2144 ms
  • Firefox 3.1 sans TraceMonkey : 3470 ms
  • Opera 9.60 : 5876 ms
  • Internet Explorer 8 : 9013 ms
  • Chrome : 2117 ms
  • Safari avec Webkit r36712 : 1817 ms
On remarque d’emblée que les trois navigateurs qui s’en sortent le mieux sont les deux à utiliser Webkit accompagné d’une nouvelle machine virtuelle (Safari et Chrome), ainsi que Firefox 3.1 en version pre-bêta, où TraceMonkey semble clairement montrer ses capacités également. Opera et surtout Internet Explorer 8 sont à la traîne.

La suite Dromaeo nous a causé malheureusement plus de problèmes. Nos versions de Firefox et Safari avec Webkit r36712 ont refusé systématiquement de mener le test jusqu'au bout, à cause de plantages répétés. Sous Internet Explorer 8 bêta 2, pas de plantage, mais un blocage à environ un tiers du test (DOM Query), qui ne pouvait pas se finir. De fait, les résultats donnés pour Firefox et Safari ne prennent pas en compte respectivement TraceMonkey et SquirrelFish :
  • Firefox 3.1 sans TraceMonkey : 6740 ms
  • Opera 9.60 : 9786 ms
  • Chrome : 5891 ms
  • Safari 3.1.2 : 6990 ms
C’est Chrome qui tire son épingle du jeu, mais les performances du navigateur de Google n’étonnent pas vraiment, beaucoup ayant déjà constaté sa rapidité.

Que peut-on déduire de tout ceci ? En premier lieu, que pratiquement tous les éditeurs sont décidés à accélérer l’exécution du JavaScript. Les conséquences seront multiples, car les sites exploitant cette technologie, et plus globalement tous ceux que l’on peut qualifier de « Web 2.0 », sont de plus en plus nombreux. On citera MySpace, Facebook, Netvibes ou encore les webmails tels que Gmail.

Pour autant, même si les opérations réalisées sur ces sites se réalisent plus rapidement, voire beaucoup plus rapidement, elles ne sont pas représentatives de l’intérêt général que peut représenter un navigateur proprement dit. Par exemple, même si Chrome et le futur Safari 4 promettent de très belles performances, il faudra encore lutter contre un Firefox peut-être légèrement moins rapide, mais accompagné de centaines d’extensions.

Quoi qu’il en soit, les futures versions des navigateurs promettent toutes un affichage plus rapide des pages Web, et l’utilisateur final ne peut que s’en réjouir.