Bonjour,
Suite à une affirmation plus ou moins gratuite de ma part accusant Firefox d'être plus lent sous Windows que sous Linux ( https://linuxfr.org/comments/759312.html#759312 ), et sur les conseils éclairés de Mathieu Pillard j'ai voulu lancer quelques bench JS sous différents navigateurs et plateformes.
Avant d'aller plus loin, précisons que ce test n'est certainement pas infaillible ou super objectif, qu'il est certainement contestable autant que mes choix lors de leur lancement (config des os, etc.)
Je désirais simplement mesurer des ordres de grandeur, et je crois que pour cela ce test est suffisant.
N'ayant pas beaucoup de temps, j'ai utilisé mon ami Google qui m'a indiqué un bench tout prêt: http://celtickane.com/projects/jsspeed.php
J'ai adapté les quelques valeurs dans le code (nombre d'itération des boucles) afin d'avoir des temps d'exécution relativement long, mais pas trop. J'ai également supprimé le test AJAX, qui appellait une page distante.
La configuration sur laquelle le test a été lancé est la suivante:
AMD Athlon XP 3500+ 64bits
1Gb Ram
Systèmes d'exploitation:
Ubuntu GNU/Linux 6.10 (beta) (à défaut d'une vraie debian)
Microsoft Windows XP SP2
Navigateurs:
Mozilla Firefox 2.0b2
Opera 9.02
Konqueror 3.5.4
Internet Explorer 6.0 SP2
Pour chaque opération, le test a été lancé 10 fois. Le résultat donné est la moyenne des temps finaux.
Linux:
Firefox : 8457.9 ms
Opera: 3819.5 ms
Konqueror: 3883 ms
Windows:
Firefox: après environ 12 secondes, on a l'avertissement que le script est trop long, et la possibilité de l'arrêter. Impossible de faire une moyenne avec ça.
IE: 3764 ms
Opera : 2817.2 ms
Quelques remarques en conclusion:
- Firefox est de loin le plus lent des navigateurs testé. En plus, mon accusation envers la version windows semble en effet infondée: c'est l'inverse que l'on constate ici.
- IE est très rapide. En dehors de son non respect des standards, ceci m'impressionne. Navigateur de qualité par ailleurs ?
- Opera est étonnant: sa version windows est de loin plus la plus rapide. Comment cela se fait-il ? (C'est pas du QT, majoritairement développé sous linux, ou je me trompe ? optimisé pour windows car plateforme majoritaire ?)
- Konqueror est très bon également, excellente nouvelle !
Je m'arrête ici, les détails sont dispo sur demande.
Je suis grandement intéressé à avoir vos avis sur la question, sans virer dans des trolls éternels, ce qui m'intéresse, c'est plus le "pourquoi" de certains de ces résultats (qui valent ce qu'ils valent, je le rappel !)
Bonne journée.
# Je sais pas comment tu fais ...
Posté par Mr Kapouik (site web personnel) . Évalué à 1.
Peut être un problème de configuration ?
Sinon c'est pas nouveau que firefox est pas forcement le navigateur le plus rapide au monde pour le javascript ...
[^] # Re: Je sais pas comment tu fais ...
Posté par Marc Poiroud (site web personnel) . Évalué à 5.
[^] # Re: Je sais pas comment tu fais ...
Posté par iznogoud . Évalué à 4.
Try/Catch with errors 835
Layer movement 1462
Random number engine 1556
Math engine 3179
DOM speed 1415
Array functions 422
String functions 146
Ajax declaration 884
Avec un unresponsive script systematique au milieu, soit un chiffre exhorbitant.
Comme on est vendredi, c'est permis : dillo fait vachement mieux sur ce test !
[^] # Re: Je sais pas comment tu fais ...
Posté par Hardy Damien . Évalué à 2.
Sur mon "Intel(R) Celeron(R) CPU 2.40GHz" les articles/journaux de plus de 100 commentaire me balance un avertissement me demandant si je doit continuer le script, alors que la même page avec firefox sur un Intell Centrino (Pentium M 740) c'est quasi immediat.
on avait déjà mis cela en évidence sur ce thread a propos de la dlfptoolbar https://linuxfr.org/~remat/20316.html
Dam
[^] # Re: Je sais pas comment tu fais ...
Posté par TNorth . Évalué à 6.
# Javascript, vraiment représentatif ?
Posté par zyphos . Évalué à -5.
Mais personnelement, je ne connais pas de site où il faut attendre plusieurs secondes à cause du javascript.
Le seul regret que j'ai pour Firefox, c'est le premier lancement qui est un peu long.
[^] # Re: Javascript, vraiment représentatif ?
Posté par liberforce (site web personnel) . Évalué à 10.
Toi on voit bien que tu t'es jamais pris un warning javascript firefox sur linuxfr... Va visiter une page avec plus de 100 commentaires, tu vas comprendre (bon, ok, ça dépend de la bécane).
[^] # Re: Javascript, vraiment représentatif ?
Posté par Sylvain Sauvage . Évalué à 7.
Pour linuxfr, j'ouvre les articles/journaux dans des onglets en arrière plan : j'en ouvre 10-20 de suite puis je les lis/parcours.
Quand j'utilisais Firefox, en ayant supprimé la fameuse question « le Javascript, c'est trop dur pour moi, je peux arrêter, dis je peux ? », l'ouverture d'un article/journal à 50 commentaires bloquait le navigateur pendant 1 ou 2 secondes (pas de clic possible), avec plus de 100 commentaires, le navigateur était inutilisable pendant 15 s.
Avec Konqueror, seuls les articles/journaux à plus de 100 commentaires bloquent l'interface pendant 2 à 3 s.
Évidemment, on voit mieux la différence avec un PC « lent »…
[^] # Re: Javascript, vraiment représentatif ?
Posté par gc (site web personnel) . Évalué à 7.
[^] # Re: Javascript, vraiment représentatif ?
Posté par Matthieu . Évalué à 3.
[^] # Re: Javascript, vraiment représentatif ?
Posté par B16F4RV4RD1N . Évalué à 5.
Opera est donc le navigateur le plus adapté pour troller mouler. Mais Konqueror ne s'en sort quand même pas trop mal (même si dans le test original, il y a plus de différence, j'ai 400 avec opera là où j'ai 1500 avec konqueror)
Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it
[^] # Re: Javascript, vraiment représentatif ?
Posté par Éric (site web personnel) . Évalué à 3.
Bref, firefox est plus lent sur la toolbar, mais c'est pour que les autres puissent fonctionner tout court.
[^] # Re: Javascript, vraiment représentatif ?
Posté par Mathieu Pillard (site web personnel) . Évalué à 2.
La toolbar est quand meme remplie de plein de petits hacks pour supporter divers navigateurs vu qu'elle fait des choses un peu compliquées avec le DOM. M'enfin si vous voulez me moinsser et moinsser Eric pour ca, allez y hein, moi je suis juste l'auteur du truc, j'y connais rien.
[^] # Re: Javascript, vraiment représentatif ?
Posté par M . Évalué à 2.
# Ton test ne veut rien dire. Chez moi Firefox s'en sort bien
Posté par Bruno Ethvignot (site web personnel) . Évalué à 3.
Linux Ubuntu Dapper 6.10
1. Konqueror => 1080ms
2. Epiphany => 1924ms
3. Firefox 1.5 => 2428ms
Fenêtre(r) 2003
1. Firefox 2.0 Bêta => 1939ms
2. Firefox 1.5 => 2078ms
3. IE6 => 2953ms
Fenêtre(r) XP SP2
1. IE6 => 1938ms
2. Firefox 1.5 => 2140ms
Quelques remarques en conclusion:
.1. J'ai parfois de gros écarts. Par exemple sur Firefox 1.5 sous XP j'ai eu la première fois 1800ms. Mais impossible ensuite de ravoir un chiffe équivalent, donc j'ai mais 2140ms, car ensuite les valeurs oscillaient entre 2100 et 2300ms.
.2. Tu fais des tests sur un navigateur bêta, et on peut supposer sur un système 64 bits je ne sais pas si c'est pertinent ?
.3. La vitesse des ces tests donnent une idée, mais à mon humble avis ne corresponde pas à la réalité.
Enfin bref je pense que les utilisateurs de Linux reproche plus les latences du serveurs X ou de GTK qui donnent une impression de lenteur.
[^] # Re: Lisre les journaux en entier il faut ...
Posté par left . Évalué à 7.
J'ai adapté les quelques valeurs dans le code (nombre d'itération des boucles) afin d'avoir des temps d'exécution relativement long, mais pas trop. J'ai également supprimé le test AJAX, qui appellait une page distante.
Bref, tu n'utilises pas le même script, donc tu ne compares pas la même chose.
De même pour ton point (1), tu aurrais du lire que:
Pour chaque opération, le test a été lancé 10 fois. Le résultat donné est la moyenne des temps finaux.
# Suite ...
Posté par Patrick Camus (site web personnel) . Évalué à -6.
# Suite ...
Posté par Patrick Camus (site web personnel) . Évalué à -3.
http://celtickane.com/projects/jsspeed.php
[^] # Re: Suite ...
Posté par aedrin . Évalué à 6.
# Javascript
Posté par Matthieu . Évalué à 0.
Tu ne peux donc pas dire que Firefox est plus lent, tu peux seulement dire que le moteur Javascript est plus lent.
[^] # Re: Javascript
Posté par TNorth . Évalué à 7.
Il est marrant de constater que lors du test, firefox n'affiche pas les résultats intermédiaires de chaque test une fois qu'il a été effectué, mais affiche tout en bloc tout à la fin.
Contrairement à Opera, par exemple, qui affiche les étapes intermédiaires et même une ou deux indication d'avance dans les boucles (élément xxxx/total) au fur et à mesure qu'il finit chaque test.
Ce n'est pas suffisant pour comparer deux moteurs de rendu non plus, mais c'est une première appréciation
[^] # Re: Javascript
Posté par blackshack . Évalué à 2.
Car même si au bout du compte, une page s'affichera totalement dans un temps équivalent, le fait qu'il affiche dès qu'il peut, donne l'impression d'avoir un affichage plus rapide. Même si on peut voir des fois des "distortions" de la page quand elle continue a s'afficher.
De plus, on peut supposer que l'on puisse appliquer une analyse de ce qui est déjà récupéré pour faire des hypothèses d'affichage (et donc de ce qui va être récupéré par la suite -je parle du code structurant ou mettant en page pas le contenu lui même bien sûr-), et ce baser sur la structure la plus probable pour commencer l'affichage et peut être ainsi réduire l'effet de distortion.
Bon c'est mes 0.2centimes, maintenant je vais me coucher, c pas bon que je réflechisse un peu.
[^] # Re: Javascript
Posté par Mathieu Pillard (site web personnel) . Évalué à 3.
[^] # Re: Javascript
Posté par left . Évalué à 7.
Le moteur de javascript de firefox faisant partie de firefox, si: il peut le dire. D'ailleurs il l'a dit.
# Javascript
Posté par elloco (site web personnel) . Évalué à 3.
À mon travail, j'ai du développer un javascript qui contrôle lui même une vidéo quicktime. J'ai donc recréer entièrement la barre (play, stop, défilement, etc.) en javascript.
Le javascript fait environ 1500 lignes de codes et j'ai essayé de l'optimiser au maximum en évitant par exemple un maximum d'appels à getElementById en mettant les éléments dans des variables globales.
La page html est quant à elle, très petite. Il y a juste le head, et dans le body, il y a un object, un embed et deux div environ.
Le résultat est que firefox et IE sont aussi rapides l'un que l'autre. Seul opera est lent.
J'avais lu quelque part que Opera est lent lorsqu'on change très souvent le style des éléments. Peut-être que ça vient de là car les styles (left, top, etc...) changent très souvent.
[^] # Re: Javascript
Posté par ナイコ (site web personnel) . Évalué à 4.
Depuis que j'ai configuré firefox pour démarrer sans Cairo (variable d'environnement CHAISPULSQUOI_CAIRO=0, je l'ai pas sous la main), il est gravement plus rapide. Pardon, il affiche à nouveau les pages à vitesse acceptable. Plus exactement, je parle du cas ou par exemple une page de DLFP contient des dizaine (centaines ?) de commentaires, faire défiler verticalement la page etait un "pain in the ass". De quoi se poignarder le cul avec une saucisse ! Maintenant, ça défile bien, et mes nerfs se portent mieux, merci.
J'imagine que faire bouger des DIVs (comme par exemple avec Netvibes) est ralenti par cela... Même si Cairo n'a rien à voir avec Javascript, indirectement son utilisation ralentit les scripts qui touchent au graphique, non ?
Mon post n'est pas très précis, je vais essayer de retrouver le nom de la variable ce soir...
[^] # Re: Javascript
Posté par ナイコ (site web personnel) . Évalué à 4.
MOZ_DISABLE_PANGO=1
La différence de vitesse est... Comment dire... Importante.
[^] # Re: Javascript
Posté par Smarter . Évalué à 1.
[^] # Re: Javascript
Posté par Mathieu Pillard (site web personnel) . Évalué à 3.
Tout le probleme étant que pango apporte enormément d'avantages pour les langues non occidentales...
[^] # Re: Javascript
Posté par Nicolas Deveaud . Évalué à 3.
J'ai fait un script JS manipulant du css et des images (chagement de la taille à l'approche de la souris), et sur ce script Firefox était nettement moins performant que le reste, et nettement moins performant sous Linux que sous Windows.
En enlevant les images, donc avec juste un changement de taille en css d'un élémént HTML, la différence entre Firefox et les autres était moins flagrante.
Et en regle général, je trouve que Firefox à bien du mal dés qu'il y a des images (une photo en grande taille et il commence à soufler.... oui mon pc s fait vieux... mais là n'est pas la question :p ), et cela joue donc beaucoup dés que tu as un Javascript utilisant des images.
Autre point : il ne me semble pas étonnant que Firefox soit moins rapide que d'autre. A ma connaissance, une bonne partie du programme de Firefox est composé de scripts non compilé, ce qui n'est pas le cas pour d'autres navigateurs. Et donc je suppose que ça doit faire une grosse différence sur les perfs générales... non ?? je me plante ?
# Timeout firefox
Posté par jjl (site web personnel) . Évalué à 6.
On peux eviter cela en changeant la clef dom.max_script_run_time dans about:config
La valeur 0 rend cette durée illimitée
http://kb.mozillazine.org/Dom.max_script_run_time
[^] # Re: Timeout firefox
Posté par TNorth . Évalué à 2.
J'avais parcouru le about:config, mais après deux ou trois recherches j'ai abandonné.
Cette boite de dialogue est bien pénible sur linuxfr quand y a plein de commentaires.
[^] # Re: Timeout firefox
Posté par Mathieu Pillard (site web personnel) . Évalué à 2.
Le gros probleme de la version actuelle, c'est que tout a été développé par tranches, en rajoutant au fur et a mesure, et du coup ca parse le DOM plusieurs fois et pas de manière rapide...
# Heu .. pourquoi c'est si lent chez toi ? oO
Posté par Corentin Chary (site web personnel) . Évalué à -4.
Le tout Gentoo (32bit) et j'obtient :
Firefox (2.0b2, avec des extensions) 1418ms
Konqueror (3.4.5) 2014 ms
Opera (9.02) 372 ms
Ce qui est quand même sacrément plus rapide que chez toi, avec un proc moins puissant.
j'aurais bien fait les tests avec wine pour rigoler, mais faut que je recompile mon kernel pour qu'il marche, donc la flemme :p.
[^] # Re: Heu .. pourquoi c'est si lent chez toi ? oO
Posté par lezardbreton . Évalué à 5.
[^] # Re: Heu .. pourquoi c'est si lent chez toi ? oO
Posté par celedhrim . Évalué à -1.
puis j'ai tester avec les autres que j'ai :
firefox 1.5.0.7 : 1500 ms
epihpany 2.14.3 : 1350 ms
mozilla 1.7.13 : 1700 ms
ben moi ca me parait bien acceptable et c'est clair que je suis pas a 3ms pres pour attendre l'affichange d'un site . de toute facon j'utilise noscript qui desactive js par defaut sur les site :) ca evite les fioritures a 2 fr 6 sous et j'active si besoin est .
[^] # Re: Heu .. pourquoi c'est si lent chez toi ? oO
Posté par lezardbreton . Évalué à 3.
Sinon, chez moi, sur le test que n'a donc pas utilisé TNorth (Core 2 Duo E6300) :
- Firefox : 1025 ms
- Konqueror : 635 ms
[^] # Re: Heu .. pourquoi c'est si lent chez toi ? oO
Posté par lezardbreton . Évalué à 2.
- Firefox 995 ms
- Konqueror 564 ms
Finalement, j'aime bien les benchmarks :)
# heuuu
Posté par kraman . Évalué à -7.
firefox 2 en l'occurence..
# tests invalides
Posté par Laurent J (site web personnel, Mastodon) . Évalué à 3.
Firefox 2.0 implémentant javascript 1.7, qui comportent beaucoup plus de caractéristiques syntaxique que javascript 1.5 (implémenté par les autres navigateurs), l'interpreteur est alors plus complexe, donc forcément, on y perd un peu en perf.
voir
http://developer.mozilla.org/en/docs/New_in_JavaScript_1.6
http://developer.mozilla.org/en/docs/New_in_JavaScript_1.7
Cependant, il est toutefois admis que pour tout ce qui est manipulation DOM à partir de javascript, c'est effectivement plus lent que les autres navigateurs (la faute en partie à xpconnect, la couche qui fait le mapping entre les objets js natifs et les objets xpcom c++ correspondant..).
Aprés, les différences entre Windows et Linux, elle est due en grande partie au système et de la façon dont il gére les processus, la mémoire etc. En effet, la majorité du code de firefox entre les deux versions étant identique... Les seuls trucs qui changent entre windows et linux, c'est le contenu de la lib NSPR de mozilla, et les fonctions bas-niveau graphiques.
NSPR est la lib d'abstraction du système et ne comporte que des fonctions de bas niveau comme l'accés au système de fichier, la gestion mémoire ou la gestion des threads.
Et les seules différences dans le moteur/interpreteur javascript entre windows et linux, ce sont essentiellement des hacks en fonctions du compilateur qui réagit différement à certaines instructions, ou alors inclure des headers différents. Mais il ne s'agit en aucun cas de différences pour optimiser. Voir la liste de ces différences ici, conçernant le moteur js
http://landfill.mozilla.org/mxr-test/seamonkey/search?string(...)
Dans les sources de Mozilla, c'est la constante XP_WIN qui est utilisée pour compiler les trucs spécifiques à windows (#ifdef XP_WIN par ex).
[^] # Re: tests invalides
Posté par TNorth . Évalué à 1.
Mais l'ajout de specs est-il si désastreux pour les performances ? Je me pose la question, parce l'ajout de nouvelles spécifications sont en général (il me semble) l'occasion d'optimiser le code. (Python 2.5, par exemple, a été bien optimisé malgré le support de moultes autre fonctionnalités)
Je me demande honnêtement si cela justifie un tel écart de performances. Surtout que le test entre FF 1.5 et FF2b2 donne des résultats semblables chez moi (donc différence entre JS 1.5+ un peu de 1.6 vs. JS 1.7)
Coté fonctions bas-niveau graphique, je n'y connais rien, je constate seulement une facteur 2 de vitesse entre linux et windows sous Opera, il me semblait légitime de me demander d'ou cela vennait !
[^] # Re: tests invalides
Posté par Sylvain Sauvage . Évalué à 2.
On peut en effet avoir des modifications positives en terme de performance, par exemple :
— simplification, clarification : moins de cas, moins de tests, moins de bogues ;
— intégration de mécanismes/fonctions :
– pour utiliser des techniques plus complexes :
- codées pour être réutilisées, pas une fonction codée à la vite ou simplement ;
- qui ne sont pas disponibles (ou difficilement) dans le langage ;
– pour éviter de passer par l'interprète.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.