Liens connexes

Dépêche modérée par

: Comparatif Intel C++ 7.0 / Gcc 3.2.1

Posté par Jylam / jylam.lnxsce (page perso, ). Modéré le 07 décembre 2002.
0
Coyote Gulch Production propose depuis 3 jours un comparatif entre les deux derniers compilateurs C/C++, a savoir Intel C++ 7.0 et Gcc 3.2.1.
On y "apprend" (les comparatifs sont toujours a prendre avec des pincettes) que le compilateur d'Intel genere un code en moyenne 15% plus rapide que celui de Gcc.
Un comparatif intéressant, qui peut permettre de se fixer sur l'un ou l'autre des compilateurs suivant ses besoins.

> Lire la dépêche (105 commentaires, moyenne: 2,4).  

Le compilateur d'Intel génère du "meilleur" code que celui de gcc dans la plupart des cas (d'après mes tests perso), mais il reste une chose qu'il ne sait pas faire : Compiler un noyau Linux. Les sources de Linux contiennent en effet pas mal de directives Gcc, et empêchent la compilation par tout autre compilateur. Mais bon, d'ici à ce qu'Intel ou quelqu'un d'autre s'y mette ...
A noter aussi que Intel C++ est gratuit pour une utilisation non-commerciale, mais reste très loin d'etre libre.

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

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

Re: Comparatif Intel C++ 7.0 / Gcc 3.2.1

Posté par matiasf () le 07/12/2002 à 11:18. (lien). Évalué à 24.

> le compilateur d'Intel genere un code en moyenne 15% plus rapide que celui de Gcc.

Cette phrase est dite dans le teste une seule fois pour SciMark 2.0. Il n'est jamais dit que gcc est globalement moins rapide de 15 %. D'ailleur dans d'autre test gcc est plus rapide.

> Le compilateur d'Intel génère du "meilleur" code que celui de gcc dans la plupart des cas (d'après mes tests perso)

Ce n'est pas ce que dit le bench. Le bench dit que dans certains domaines le compilateur Inter est meilleur mais pas "dans la plupart des cas".
Pour avancer çà il faut que tu sois plus précis. Moi j'ai plus confiance au bench qu'à tes tests perso. On peut assi discuter de cette notion "brumeuse" de "meilleur code".

> mais il reste une chose qu'il ne sait pas faire : Compiler un noyau Linux.

Et oui, le compilateur Intel n'a pas toute les fonctionnalités de gcc pour compiler un noyau (Et le bench dit clairement que le compilateur Intel n'a pas toutes les fonctionnalités de gcc).

Le bench est un bon bench. Honnète et tout.
Mais ne bench ne dit pas :
- que gcc est globalement 15% plus lent que le compilateur Intel. D'ailleur gcc est plus rapide pour le bench OOPack (sauf pour les complex), aussi rapide pour Stepanov, plus rapide pour MazeBench et effectivement plus lent d'en moyenne 15 % pour le test SciMark 2.0.
- que le compilateur est Intel est meilleur. La conclusion du test les renvoies dos à dos.

Bref, gcc est globalement un très bon compilateur (comme le prouve l'article du bench).

J'ai l'impression que le modérateur n'a pas lu le bench pour accepter le commentaire qui accompagne la news.

Re: Comparatif Intel C++ 7.0 / Gcc 3.2.1

Posté par DPhil (page perso, ) le 07/12/2002 à 12:13. (lien). Évalué à 11.

Il y a quelques jours j'avais fait un test sur la compilation de Lame. Il s'avérait que la version compilée avec ICL7 était moins rapide que celle compilée avec GCC2.95 sur pentium II. La différence n'était pas flagrante, mais d'environ 1 à 2 %.
Je pense qu'ICL est surtout performant sur les nouvelles architecture (pentium IV), mais je ne peut pas faire le test.
Il est à noter qu'un soft compilé avec ICL des optimisations pentium IV est plus lent sur un Athlon qu'une version compilée sans optimisation. Des tests ont été effectuées avec OggEnc (il y a des lien sur le forum audio-illumination.org)

Re: Comparatif Intel C++ 7.0 / Gcc 3.2.1

Posté par Troy McClure (page perso, ) le 07/12/2002 à 12:17. (lien). Évalué à 29.

Les bench ça vaut ce que ça vaut mais bon, les perf affichées pour le scimark me paraissent vraiment mauvaises pour un pIII-600 qui est censé savoir faire 42 choses à la fois tout en accelerant l'internette: 100MFlops pour une factorisation LU (juste une série d'additions multiplications bien bourrine) c'est vraiment pas terrible. D'autant qu'il ne fait pas trop intervenir le cache puisque la matrice en question est 100x100 soit 80ko d'occupation mémoire ça loge à peu près dans n'importe quel cache L2.

[Dans la suite je fais un blocage sur les perf du bench LU, qui est représentatif de la puissance du processeur et de la capacité du compilo à bien optimiser des petites boucles assez simples de calcul en virgule flottante -- je n'ai pas regardé les autres résultats]

Du coup j'ai essaye sur mon celeron-450 (un bon vieux celeron avec juste le mmx)
Composite Score: 70.06
FFT Mflops: 65.28 (N=1024)
SOR Mflops: 108.50 (100 x 100)
MonteCarlo: Mflops: 17.16
Sparse matmult Mflops: 52.35 (N=1000, nz=5000)
LU Mflops: 107.00 (M=100, N=100)
(gcc-3.2.1 -O3 -funroll-all-loops -fomit-frame-pointer -ffast-math)

(on notera que j'ai viré l'option -mcpu)

ah ben c'est con, les perfs sont les mêmes que sur le pIII du gars! peut-être que le test ne tire pas partie du SSE puisque si je ne m'abuse celui-ci travaille en simple précision et le bench est en double-prec. Passons.

Pour continue à voir, je vais sur un celeron-600 (qui doit avoir le SSE, enfin j'en sais trop rien)

rebelote:
Composite Score: 82.21
FFT Mflops: 94.39 (N=1024)
SOR Mflops: 101.21 (100 x 100)
MonteCarlo: Mflops: 35.32
Sparse matmult Mflops: 44.16 (N=1000, nz=5000)
LU Mflops: 135.99 (M=100, N=100)
(gcc-3.2.1 -O3 -funroll-all-loops -fomit-frame-pointer -ffast-math -march=pentium2)

Flute alors, son bi-pIII est vraiment pas fougueux, un céléron-600 est 33% plus véloce... on va mettre ça sur le compte du SMP :-/

Sur la machine en question, il y a aussi icc-6.0 alors autant faire la comparaison:
Composite Score: 122.48
FFT Mflops: 88.27 (N=1024)
SOR Mflops: 157.43 (100 x 100)
MonteCarlo: Mflops: 89.48
Sparse matmult Mflops: 72.82 (N=1000, nz=5000)
LU Mflops: 204.39 (M=100, N=100)
(icc -O3 -ipo -axK)

Mazette ! sur ce coup, icc est 60% plus performant que gcc ! Bon, on va dire que c'est parce que c'est du intel, allons voir sur un athlon.

La machine en question est un athlon-XP 1400, une machine bas de gamme d'assembleur.
Composite Score: 345.81
FFT Mflops: 320.63 (N=1024)
SOR Mflops: 324.40 (100 x 100)
MonteCarlo: Mflops: 112.32
Sparse matmult Mflops: 327.68 (N=1000, nz=5000)
LU Mflops: 644.03 (M=100, N=100)
(gcc-3.2.1 -O3 -funroll-all-loops -fomit-frame-pointer -ffast-math -march=pentium2)


Composite Score: 436.18
FFT Mflops: 339.35 (N=1024)
SOR Mflops: 448.13 (100 x 100)
MonteCarlo: Mflops: 267.10
Sparse matmult Mflops: 409.60 (N=1000, nz=5000)
LU Mflops: 716.71 (M=100, N=100)
(icc -O3 -ipo -axK)

Alors là je suis plus qu'impressionné! Les perf sont vraiment bluffantes à croire qu'il y a un bug dans le bench. La bonne nouvelle c'est que gcc n'est pas tellement à la rue. Par contre j'ai pas de p4 sous la main pour faire la comparaison..


A titre d'info j'ai aussi lancé le bench sur une Bi-Alpha (21264A à 667MHz). A côté de l'athlon elle fait plutot pâle figure (là aussi je suis plus que surpris)

Composite Score: 194.86
FFT Mflops: 214.46 (N=1024)
SOR Mflops: 236.93 (100 x 100)
MonteCarlo: Mflops: 48.22
Sparse matmult Mflops: 175.55 (N=1000, nz=5000)
LU Mflops: 312.68 (M=100, N=100)
(cc -O3 -arch ev67 -fast)
A sa décharge, il faut dire que la machine est assez chargée (load = 2.7) et que le test n'évalue que la puissance brute du processeur, il ne tire pas partie du cache assez gros de cette machine.

Par contre on peut comparer le compilateur compaq avec gcc (3.2):


Composite Score: 155.17
FFT Mflops: 199.73 (N=1024)
SOR Mflops: 167.08 (100 x 100)
MonteCarlo: Mflops: 50.65
Sparse matmult Mflops: 220.92 (N=1000, nz=5000)
LU Mflops: 137.46 (M=100, N=100)
(gcc -O3 -funroll-all-loops -fomit-frame-pointer -ffast-math -mcpu=ev67 -mtune=ev67)

... mouaif vraiment pas convainquant, sur le LU le compilo compaq a été plus de 2 fois plus performant que gcc.. je n'ai peut-être pas utilisé les bonnes options pour gcc :-/ (en particulier pour les histoires d'aliasing mais j'ai la flemme de chercher)


Allez, un dernier coup sur une Origin 2000 pas très fraiche (à base r12k à 400MHz):

Composite Score: 148.34
FFT Mflops: 129.78 (N=1024)
SOR Mflops: 242.08 (100 x 100)
MonteCarlo: Mflops: 64.22
Sparse matmult Mflops: 108.86 (N=1000, nz=5000)
LU Mflops: 196.73 (M=100, N=100)
(cc -Ofast -OPT:alias=restrict:roundoff=3)


et avec gcc (3.0.4):
Composite Score: 114.10
FFT Mflops: 124.23 (N=1024)
SOR Mflops: 155.90 (100 x 100)
MonteCarlo: Mflops: 20.97
Sparse matmult Mflops: 102.08 (N=1000, nz=5000)
LU Mflops: 167.32 (M=100, N=100)
(gcc-3 -O3 -funroll-all-loops -fomit-frame-pointer -ffast-math -mips3)

bon, gcc n'est pas trop ridicule sur ce coup il s'en sort bien :)


au final c'est bien dur de tirer des conclusions .. mis à part que je ne comprends comment l'auteur du bench a obtenu des performances bien plus mauvaise que celles que j'ai sur un celeron-600.

Page de bench multi lanagage

Posté par Cédric Foll (page perso, ) le 07/12/2002 à 13:07. (lien). Évalué à 2.

Pour ceux que les bench amusent, je me permet d'ajouter cette page qui propose des benchmarks (charge cpu et mémoire) sur pleins de langages (c (gcc), java, ocaml, ruby, perl, ...) pour pleins de taches (gestion exeptions, threads, arithmétique entiere, flotante, recursivité, expressions régulières....)
Lecture plus que recommandée.

http://www.bagley.org/~doug/shootout/(...)

Re: Comparatif Intel C++ 7.0 / Gcc 3.2.1

Posté par Bouiaw (page perso, ) le 07/12/2002 à 15:09. (lien). Évalué à 2.

Interressant ce bench !
Mais comment se fait il que icc 7.0 soit moins performant sur quasiemment tout les tests que icc 6.0 ???

[+] +15% - quel intérêt ?

Posté par core () le 07/12/2002 à 16:00. (lien). Évalué à -1.

Il semble que même si GCC génère du code compilé 15% moins rapide que le compilo Intel, ça n'a strictement aucune espèce d'importance. 15% de différence au niveau rapidité me semble totalement dérisoire au regard des perfs des machines actuelles, sauf peut-être pour du travail de travail intensif quand ça doit prendre des heures... c'est vrai que 1h30 gagnée sur 10 heures de calcul, pourquoi, et encore...

A coté, GCC a l'avantage : 1) d'être *plusieurs* compilateurs 2) d'être fortement multi-architectures, ce qui me semble être un avantage énorme (je dirais même que ce point a tendance à déjustifier l'existence même des Java, .Net et autre Mono...) 3) d'être libre et donc facilement améliorable, bug-fixable etc.

Re: Comparatif Intel C++ 7.0 / Gcc 3.2.1

Posté par kesako () le 07/12/2002 à 17:08. (lien). Évalué à 2.

Dans le meme ordre de choses, je cherche depuis un moment la meme comparaison entre gcc 2,x ou 3,x et Sun CC 5,x sur architecture sparc .

Quelqu'un a des liens sur le sujet ?

Exemple type : apache 1.3 est il meilleur sur sparc compilé avec gcc ou avec CC ?

Merci d'avance

Prix compilo Inter C++

Posté par matiasf () le 07/12/2002 à 18:34. (lien). Évalué à 2.

Une license : 400 €
Le profiler : 700 €

gcc + gprof : 0 €

Vu le prix, la non disponibilité des sources, des gains uniquement dans des domaines bien précis, ces moind