• # des reponses

    Posté par (site web personnel, Mastodon) . En réponse au journal Performance des navigateur web: linux parent pauvre ?. Évalué à 10.

    Pourquoi donc une version linux plus lente que sous windows.


    1) bon déjà, faudrait tester des navigateurs de même génération. Comparer un Chromium 4 qui vient de sortir, à une "vieille" version de Firefox, c'est limite. Car en ce moment, les progrés sont énormes ET très rapide. Bref, vaut mieux comparer avec une beta 3.6 de Firefox.

    2) comme ça été dit, TraceMonkey n'est pas activé en 64bit dans la version 3.5 de Firefox, mais l'est à priori dans la version 3.6. d'où de grosse différence, puisque c'est alors l'ancien moteur JS non optimisé (SpiderMonkey) qui est utilisé

    3) comme je l'ai déjà dit dans un autre commentaire, il n'y a pas de "branche" spécifique à linux ou à windows. C'est le même code, le même trunk. Les deux versions partagent au moins 90% du code, parce que l'objectif de Mozilla (depuis 1998) est justement de limiter de recoder les mêmes trucs pour chaque plateforme. Ainsi donc, c'est exactement le même moteur de rendu, le même moteur JS, la même implémentation DOM, les mêmes sources pour l'interface en XUL (modulo les fichiers CSS et quelques aménagements, comme l'emplacement de l'item de menu Options et autre trucs mineurs de cet acabi) etc..

    Et tout ça repose sur une même couche d'abstraction du système, que ce soit d'un point de vue graphique (lib Cairo), ou plus général (fichiers, threads, et cie : lib NSPR)

    La grosse différence entre les deux, se situe donc dans l'implémentation de cette couche d'abstraction, tant dans Cairo que NSPR, mais aussi dans le toolkit utilisé (GTK sous linux, win32 sous windows et cie)

    Bref, au final, les différences de perfs entre Windows et Linux, se situent principalement dans les accés au système et à l'environnement graphique. De là à dire que le sous-systeme graphique de Windows est plus performant que X... ;-)
    Notons aussi que sous linux, on a les problemes de fsync (notament via sqlite). Dans la 3.6, ils ont alors essayé de limité au maximum les accés disques et les requetes SQL, pour palier à ce défaut.

    Bref, la faute n'est pas entièrement celle de Mozilla, mais de aussi des libs externes utilisées.

    4) la compilation. Sous windows, c'est Visual C++ qui est utilisé. Sous les autres système, GCC. Il parait que VC produit souvent du code mieux optimisé que GCC. Ceci explique peut être cela.

    D'une distro à une autre, les libs externes utilisées (sqlite et cie), ne sont pas forcément la même version qu'utilisée dans les builds windows, (qui sont celles largement testées et validées par Mozilla). Peut-être alors a-ton des différences de perfs parce qu'utilisation de libs différentes (plus ancienne par ex). Pure supposition de ma part. Notons aussi que sous windows, tout est compilé en statique.

    5) possible que la différence se fait sentir à cause aussi des différences entre options de compil, entre chaque distro et os. Possible aussi que les patchs ajoutés par certaines distro aient des effets de bords..

    6) reste aussi le temps passé à optimiser la version Linux. Il y a des développeurs sous linux, mais comme dit Pascalc plus haut, peu de retour, peu de beta testeur, et ne représentent même pas 1% de tout les betas testeurs. Moins de retours -> moins de bug de perf "découverts". D'ailleurs, il est probable que bon nombre de ces 1% des betas testeurs utilisent les binaires vanilla de Mozilla (compilé en static, sans patchs et autre options de compil exotiques), donc peut être avec moins de différences flagrantes. ça rejoint le point 5.

    Bon, et sinon, ça râle régulièrement sur ce site, à propos des perfs sous linux (souvent à juste titre, c'est vrai). Mais râler ne suffit pas. Il faut aussi des gens pour tester et pour coder. Alors n'hésitez pas à contribuer ;-)