compilateur de comparaison est non trivial:
- Elle peut varier de processeur à processeur. GCC peut mieux optimiser pour i7 et MSVC pour Core 2 Duo ou vice versa. Les performances peuvent être affectées par le cache, etc. (Dérouler les boucles ou ne pas dérouler les boucles, c'est la question;)).
- Cela dépend très largement de la façon dont le code est écrit. Certains idiomes (équivalents entre eux) peuvent être préférés par un compilateur.
- Cela dépend de la façon dont le code est utilisé.
- Cela dépend des drapeaux. Par exemple, gcc
-O3
est connu pour produire souvent un code plus lent que -O2
ou -Os
.
- Cela dépend de ce que l'on peut supposer du code. Pouvez-vous autoriser un alias strict ou non (
-fno-strict-aliasing
/-fstrict-aliasing
dans gcc). Avez-vous besoin de IEEE 754 complet ou pouvez-vous plier les règles de calcul du pointeur flottant (-ffast-math
).
- Cela dépend également des extensions de processeur particulières. Activez-vous MMX/SSE ou non. Utilisez-vous intrinsèques ou non. Dépendez-vous que le code est compatible avec i386 ou non.
- Quelle version de gcc? Quelle version de msvc?
- Utilisez-vous l'une des extensions gcc/msvc?
- Utilisez-vous des microbenchmarking ou des macrobenchmarking?
Et à la fin, vous trouvez que le résultat était moins de erreur statistique;)
Même si l'application unique est utilisé, le résultat peut être peu concluantes (fonction A de meilleurs résultats dans gcc mais B en msvc).
PS. Je dirais que cygwin sera le plus lent car il a un niveau d'indirection supplémentaire entre POSIX et WinAPI.
La question concerne les temps de compilation, pas les performances de l'exécutable qui en résulte. –
Presque tout ce qui précède s'applique également, sauf peut-être le dernier à mesurer la vitesse du compilateur. –
Une raison de downvote? –