Journal Giant GCC versus Mega LLVM

Posté par .
Tags : aucun
2
9
sept.
2009
Phoronix a publié le 4 septembre un dossier comparatif entre GCC et GCC-LLVM.
Ce comparatif consiste à tester les performances de logiciels compilés d'une part avec GCC et d'autre part avec GCC-LLVM.
La plateforme utilisée est la suivante :
- un Mac Mini avec core2duo 2GHz
- le système d'exploitation le plus abouti du moment: Apple Mac OS X Snow Leopard ®©™.
- GCC 4.2.1 et GCC-LLVM 4.2.1 , tous deux de chez Apple.

Les logiciels compilés sont Lame, John the ripper, Crafty (moteur de jeu d'échec), Tachyon (raytracer) et quelques autres.

Les résultats sont disponibles à l'adresse suivante : http://www.phoronix.com/scan.php?page=article&item=apple_llv(...)

Je résume les résultats: sur 12 tests, 10 donnent gagnant GCC (avec des gains de l'ordre de 5 à 50% selon les tests), sur 2 autres tests le binaire compilé par GCC-LLVM est plus rapide.
  • # GCC 4.2.1 ?

    Posté par (page perso) . Évalué à 10.

    GCC 4.2.1 est sorti en juillet 2007 (il y a plus de deux ans). Il aurait été plus intéressant de tester GCC 4.4. À ce que j'ai compris, c'est juste qu'ils avaient la flemme : ils ont pris la version de LLVM-GCC livrée avec Xcode (3.2 de Mac OS X 10.6).
    • [^] # Re: GCC 4.2.1 ?

      Posté par (page perso) . Évalué à 10.

      On peut pas tout demander du "système d'exploitation le plus abouti du moment" !
    • [^] # Re: GCC 4.2.1 ?

      Posté par (page perso) . Évalué à 4.

      D'un autre côté, les performances qu'ils obtiennent reflètent ce qu'obtiendrait l'utilisateur mu (après lambda) qui compilerait lesdits logiciels avec un gcc livré de base sur son système d'exploitation.
      • [^] # Re: GCC 4.2.1 ?

        Posté par (page perso) . Évalué à 2.

        M µ ?
      • [^] # Re: GCC 4.2.1 ?

        Posté par (page perso) . Évalué à 2.

        GCC 4.4.1 et 4.5 (snapshot du 27 août dernier) sont installables via MacPorts.

        Fink permet d'installer GCC 4.4.1.

        Je doute fortement qu'un client Mac lambda (celui qui a un iPod, iPhone et écoute en U2 en boucle) compile ses propres logiciels. On parle bien de développeurs là. Et il existe des développeurs capables d'installer GCC ;-)

        Note : GCC 4.4.1 est la dernière version stable de GCC.
  • # Clang

    Posté par (page perso) . Évalué à -1.

    Le soucis c'est qu'apple a beaucoup travaillé sur Clang pour avoir plus de performances, pas sur llvm-gcc ....
    Ces benchmarks ne valent rien...

    Clang : http://clang.llvm.org/
    • [^] # Re: Clang

      Posté par . Évalué à 6.

      Sauf qu'il y a quelques temps un bench [1] avait été fait avec clang, gcc, icc sur ffmpeg (x86) et clang était le grand perdant.
      [1] il se trouve quelque part sur http://multimedia.cx/eggs
    • [^] # Re: Clang

      Posté par . Évalué à 2.

      clang est un front-end qui transforme le code source en arbre syntaxique qui est ensuite traduit dans une forme intermediare que comprend LLVM. A moins que le resultat fournit par clang soit sous une forme incomprehensible ou confuse telle que LLVM ne peut rien optimiser, je doute qu'echanger clang avec le front-end de GCC se traduise pas une modification des performances de l'executable produit.
      • [^] # Re: Clang

        Posté par (page perso) . Évalué à 1.

        Si, ça change car Clang contrairement à GCC : (http://clang.llvm.org/comparison.html)
        - Garde la trace de chaque token de code. en passant le code à LLVM, ce qui permet de reafactoriser/optimiser encore plus, et mieux
        - Clang ne simplifie pas le code avant de le re-filer a LLVM (l'exemple est : si y'a "x-x" dans le code, GCC va filer 0, Clang x-x), ça aide a optimiser, refactoriser...
        - Clang réutilise une partie des optimisation de LLVM (optimisations, JIT, compilation au link, ...)
        - Clang a un nouveau design, ce qui le rends plus propre

        J'adore GCC, c'est mon outil préféré et c'est merveilleux d'avoir une telle machine a notre service !
        Mais Clang est le fruit d'un travail neuf, qui le rend doublement intéressant :
        - Il permet de faire des optimisations que GCC ne peut pas faire a cause de son design interne (c'est aussi le concept initial de LLVM-GCC en attendant un nouveau frontend)
        - La license est moins restrictive, c'est loin d'être pour moi le point le plus intéressant

        Ce n'est clairement pas un remplaçant de GCC pour tous les cas, mais ça pourra servir pour générer des binaire qui ont besoin d'avoir une optimisation plus fine.
        • [^] # Re: Clang

          Posté par (page perso) . Évalué à 6.

          >>> générer des binaire qui ont besoin d'avoir une optimisation plus fine.

          Ben ça n'a pas l'air d'être le cas puisqu'une vieille version de GCC semble éclater LLVM.
        • [^] # Re: Clang

          Posté par . Évalué à 2.

          - Clang ne simplifie pas le code avant de le re-filer a LLVM (l'exemple est : si y'a "x-x" dans le code, GCC va filer 0, Clang x-x), ça aide a optimiser, refactoriser...

          Je vois pas ce qu'il y a d'intéressant à factoriser dans "x-x" par rapport à "0". Hum.
          Ceci dit remplacer "x-x" par "0" n'est pas forcément valable en toutes circonstances ;) Exemple (en Python) :

          >>> f = float('nan')
          >>> f
          nan
          >>> f - f
          nan
          >>> f - f == 0
          False
  • # !!!

    Posté par . Évalué à 10.

    - le système d'exploitation le plus abouti du moment: Apple Mac OS X Snow Leopard ®©™.

    Merde, un trollomètre tout neuf qui m'explose à la gueule. Ceci dit, j'en rigole encore.
    • [^] # Re: !!!

      Posté par . Évalué à 9.

      Si ça supporte pas ça, c'est que ça devait être de la camelote fabriquée en Chine, ton truc...
      • [^] # Re: !!!

        Posté par . Évalué à 9.

        C'est juste parce que celui là tournait sur iphone. On sait enfin d'où viennent les explosion d'iphone !
    • [^] # Re: !!!

      Posté par . Évalué à 5.

      Merde, un trollomètre tout neuf qui m'explose à la gueule. Ceci dit, j'en rigole encore.

      Si tu utilisais un trollomètre Prumpleffer, tu n'aurais aucun problème de ce genre.
      • [^] # Re: !!!

        Posté par . Évalué à 2.

        Il faut surtout un trollomètre à échelle logarithmique.
  • # mega giant

    Posté par . Évalué à 2.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.