[C++] Meilleur compilateur ?

Tout est dit !

Lequel est le plus rapide (lors de l’exécution) ?

C’est l’éléphant le plus fort, parce que toute sa force est concentrée dans sa trompe.

[quote=“OnlyForDredi, post:1, topic: 47865”]Tout est dit !

Lequel est le plus rapide (lors de l’exécution) ?[/quote]

Un cerveau bien configuré. Après, c’est clair que ça prend du temps à compiler.

Sinon, je te dirais les compilateurs intel.

Ca dépends…

j’aurais aussi dit intel (pour la compilation sur les x86 uniquement, bien entendu), mais juste pour faire progresser la discussion, je vais dire ton cerveau et un bouquin d’ASM (et beaucoup de temps)

edit : juste pour éviter la réponse de normand, quelques pistes (à modérer, quand même) :
gcc vs intelCC : http://shootout.alioth.debian.org/gp4/benc…&lang2=icpp
gcc vs msvc : http://forums.msdn.microsoft.com/en-US/vcg…6-5bd49eb7e8dc/

hélas, je n’ai que ces deux benchmarks, qui ne sont probablement pas suffisant pour tirer des vrais conclusions, surtout que comme l’a dit tzim, ça dépend (de ton programme). Globalement, ils semblerait que ICC soit très légèrement devant GCC dans la plupart des bench. Quant à msvc, les commentaires du 2ème lien me laisseraient penser (comme tout le monde s’en doute) qu’il soit à peu près équivalent à GCC… Y a pas de compilo miracle (enfin pas encore, du moins).
En résumé : tu codes sous windows, utilises msvc avec un visual C++ express. Tu codes sous linux, te casses pas la tête et utilise gcc comme tout le monde.

Réponse du normand à la normande… :slight_smile:

me prend son pop-corn et attend le passage des poids lourds (sumon Glop) :crying:

Tu parles de l’exécution du programme compilé ou celle du compilateur ?

Ca depend (Ca depasse…):
Du type de code, de la taille du projet, de l’organisation de tes fichiers, des options de compils, de la plateforme ciblee, de l’os ciblee (ABI powerpc anyone ?), du poil de la paume de ta mains, de la temperature ambiente et de tout un tas d’autre truc…

Je peux te dire que le plus mauvais compilo du monde, c’est probablement CodeWarrior dans son incarnation mips et x86, et meme CodeWarrior, en le torturant un brin tu peux lui faire produire du code correc’.

Sur ce, je vous laisse encore 1h pour vous touchez le kiki, et je lock si personne n’a rien d’autre a rajouter…

J’ai juste une question,

Le fait qu’il y est des compilos qui chie du code plus rapide que d’autre vient de quoi ?
Ca fait un bon bout de temps qu’on sait coder des optims et tout, Je pense que les algos des optims sont optimales…

Ca vient de quoi, vous pensez ?

Une digression, sans trop troller non plus.

Si tu as une grosse carte graphique, tu peux te tourner vers des compilateurs spécialisés dans les GPU (cuda sous nvidia, truc sur ati) pour obtenir une vitesse d’exécution assez impressionnante de programmes procédant à des calculs scientifiques, essentiellement. C’est une solution de plus en plus utilisée dans des niches de recherche, mais il me semble que le code source (C++) doive, dans une certaine mesure, être spécifiquement adapté à la solution choisie.
Au moins, ca existe sous windows et nunux.

Selon les applications, on peut obtenir un facteur 30 par rapport à un CPU desktop, donc ca n’est pas rien. C’est bien plus significatif, dans une certaine mesure, que les écarts de perfs sur un même programme compilé sur plusieurs compilateurs.

Mais encore faut-il en avoir vraiment besoin. Avant de définir des moyens à employer, de réflêchir aux éventuelles optimisations à envisager, il me semble logique de d’abord cerner les besoins en temps et espace…

edit: on oublie, c’est pour faire tourner sur une grappe de calcul…

Moi c’est mon rêve ca, être tellement bon en C++ qu’il me reste plus qu’à m’inquieter des optimisations du compilateur…

Avavrin, t’es lourd: c’est une super bonne question ca, mais la j’ai la fleme :slight_smile:
je reviens demains si personnes a rien dit d’ici la!

Houla non on est loin d’etre optimal dans les algo d’optim (meme si prouver qu’on est optimal… mathematiquement, c’est vraiment pas facile du tout du tout des qu’on sort des cas d’ecole de base. C’est meme un champ de recherche pas facile sur lequel les gens travaillent, que ca soit au plan methode formelle ou la complexité). Cela dit on est largement au point ou a part cas particulier et sans faire d’idiotie on a du code plus optimal/complexe que ce qu’un humain voudrait/pourrait faire a la main (selon l’humain :crying:). Et puis il y a le contexte, plus le compilo sait de trucs, plus il peut optimiser comme il faut. C’est la raison pour laquelle une JIT peut souvent produire du code plus optimal qu’une compilation offline (et ca a rien de theorique) :).

Navré j’avais un peu lâché ma question à l’arrache hier soir avant de partir.

Je vais détailler un peu.
On a une grosse application bien gourmande qui recompile ses “produits” avant de faire l’exécution.
Par défaut elle est livrée avec le compilateur Borland C++.

Nos gentils clients allemands et belges ont acheté il y a fort longtemps le compilateur Intel C++ 7.
La différence que l’on connaît déjà entre les deux est que:

  • Borland C++ compile nos produits plus rapidement, mais exécute moins rapidement les produits compilés
  • A l’inverse, Intel C++ compile bien moins vite mais exécute plus rapidement.

Etant donné que le temps de compilation représente moins de 10 mn pour l’instant et que parcontre le temps d’exécution est de plus de 36 heures (sur une ferme de 168 CPU quand même), autant vous dire que même un gain de 2% serait exceptionnel.

Techniquement, l’environnement c’est ça:
[indent] - Bi-Xeon Dual Core

  • 8 Go RAM
  • Windows 2003 SP1
    [/indent]Alors après je me demandais aussi si de passer du compilateur Intel C++ 7 vers Intel C++ 10.1 cela faisait gagner du temps d’exécution, ou si un autre compilateur pouvait améliorer un peu cela.
    Oui, j’en ai des questions existentielles dès le matin, moi.
    Je suis ouvert à toute suggestion.

Ya pas des versions d’evaluation du compilo intel ?

BONNE IDEE !
Rien de tel qu’un test grandeur nature !!
Je vais voir ça, merci !

a) Tout pareil que Glop
:slight_smile: Ha bah voila : maintenant on parle!

Je sais qu’ibm (intel et amd aussi, d’ailleurs) avait commence a faire de la recherche dans la compilation pour le massivement parallels, ca peut etre un truc a regarder.
Un autre truc a prendre en compte, pour tout compilos (intel, borland, ou autre), si tu sais que vous allez tourner sur un type de cpu particulier, faite attention de tuner les options pour le cpu en question, vu que la taille du cache, la profondeur du pipeline et le jeu d’instruction peuvent faire une difference.
Je ne sais pas si c’est toujours le cas, mais dans le temps, le compilo intel te permetait de choisir le cpu (et voir meme la version du type de cpu, pour certain gains pas degueux (jusqu’a 5%, selon le code, forcement)

La recherche s’oriente aussi aussi dans la certification de compilateur : http://compcert.inria.fr/
Un compilo codé en Coq entièrement prouvé…

Ou la transformation de certificat, Proof-Carrying Code

Enfin la compilation c’est tout un monde :slight_smile:

Sous linux il est dispo gratuitement, par contre sous windows et mac, je n’ai pas vu de version d’essai.

Pour le multicore, c’est plus un redesign des algorithmes qui peut apporter quelque chose… Sinon oui l’Intel est capable de donner de meilleurs résultats avec les options bien poussées et en faisant du profiling.