2010-03-11 6 views
9

Nous travaillons sur la réduction des temps de compilation sous Windows et considérons donc toutes les options. J'ai essayé de regarder sur Google pour comparer l'heure de compilation en utilisant GCC (MinGW ou Cygwin) et le compilateur MSVC (CL) sans aucune chance. Bien sûr, faire une comparaison ne serait pas difficile, mais je préfère éviter de réinventer la roue si je le peux.Comparaison du temps de compilation entre Windows GCC et le compilateur MSVC

Est-ce que quelqu'un connaît une telle comparaison là-bas? Ou peut-être que quelqu'un a une expérience pratique?

entrée très appréciée :)

Répondre

4

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.

+0

La question concerne les temps de compilation, pas les performances de l'exécutable qui en résulte. –

+0

Presque tout ce qui précède s'applique également, sauf peut-être le dernier à mesurer la vitesse du compilateur. –

+0

Une raison de downvote? –

Questions connexes