2010-03-11 8 views
9

Stiamo lavorando per ridurre i tempi di compilazione su Windows e stiamo pertanto considerando tutte le opzioni. Ho provato a cercare su Google un confronto tra il tempo di compilazione usando GCC (MinGW o Cygwin) e il compilatore MSVC (CL) senza alcuna fortuna. Certo, fare un paragone non sarebbe difficile, ma preferirei evitare di reinventare la ruota se posso.Confronto del tempo di compilazione tra il compilatore GCC di Windows e MSVC

Qualcuno sa di un simile confronto là fuori? O forse qualcuno ha qualche esperienza pratica?

ingresso molto apprezzato :)

risposta

4

Confrontando compilatore non è banale:

  • Può variare da processore a processore. GCC potrebbe ottimizzare meglio per i7 e MSVC per Core 2 Duo o viceversa. Le prestazioni possono essere influenzate dalla cache, ecc. (Srotolare i loop o non srotolare i loop, questa è la domanda;)).
  • Dipende molto in gran parte da come viene scritto il codice. Alcuni idiomi (equivalenti tra loro) possono essere preferiti da un compilatore.
  • Dipende da come viene utilizzato il codice.
  • Dipende dalle bandiere. Ad esempio, è noto che gcc -O3 produce codice più lento, quindi -O2 o -Os.
  • Dipende da quale ipotesi può essere fatta sul codice. Puoi consentire l'aliasing rigoroso o no (-fno-strict-aliasing/-fstrict-aliasing in gcc). Hai bisogno di IEEE 754 completo o puoi piegare le regole di calcolo puntatore mobile (-ffast-math).
  • Dipende anche da particolari estensioni del processore. Abilita MMX/SSE o no. Usi intrinsecamente o no. Dipende dal fatto che il codice sia compatibile con i386 o meno.
  • Quale versione di gcc? Quale versione di msvc?
  • Usi una delle estensioni gcc/msvc?
  • Usi il microbenchmarking o il macrobenchmarking?

E alla fine si scopre che il risultato è stato meno di errore statistico;)

Anche se la domanda unica viene utilizzato il risultato può essere inconcludente (funzione A un rendimento migliore in gcc ma B in msvc).

PS. Direi che cygwin sarà più lento in quanto ha un ulteriore livello di riferimento indiretto tra POSIX e WinAPI.

+0

La domanda riguarda i tempi di compilazione, non le prestazioni dell'eseguibile risultante. –

+0

Quasi tutti i precedenti si applicano anche se non l'ultimo a misurare la velocità del compilatore. –

+0

Qualche motivo per downvote? –

Problemi correlati