Spero che questo aiuta più di ferite :)
ho fatto una piccola sparatoria compilatore a volte più di un anno fa, e sto andando fuori di memoria.
- GCC 4.2 (Apple)
- Intel 10
- GCC 4.2 (Apple) + LLVM
ho provato più programmi di elaborazione di modelli pesanti segnale audio che avevo scritto.
Tempi di compilazione: il compilatore Intel era di gran lunga il compilatore più lento, più di "2x volte più lento" di un altro pubblicato.
GCC ha gestito modelli profondi molto bene rispetto a Intel.
Il compilatore Intel ha generato file di oggetti enormi.
GCC + LLVM ha restituito il binario più piccolo.
Il codice generato potrebbe presentare una variazione significativa a causa della costruzione del programma e in cui è possibile utilizzare SIMD.
Per il modo in cui scrivo, ho scoperto che GCC + LLVM ha generato il codice migliore. Per i programmi che avevo scritto prima ho preso sul serio l'ottimizzazione (come ho scritto), Intel era generalmente migliore.
I risultati di Intel varia; ha gestito alcuni programmi molto meglio, e alcuni programmi molto peggio. Ha gestito molto bene l'elaborazione non elaborata, ma conferisco a GCC + LLVM la torta perché quando inserita nel contesto di un programma più grande (normale) ... ha funzionato meglio.
Intel ha vinto per la prima volta, il numero di crunch su enormi set di dati.
GCC da solo ha generato il codice più lento, sebbene possa essere altrettanto veloce con le misurazioni e le nano-ottimizzazioni. Preferisco evitare quelli perché il vento potrebbe cambiare direzione con la prossima versione del compilatore, per così dire.
Non ho mai misurato programmi scritti male in questo test (cioè i risultati hanno sovraperformato le distribuzioni delle librerie di prestazioni più diffuse).
Infine, i programmi sono stati scritti su diversi anni, utilizzando GCC come compilatore primario in quel momento.
Aggiornamento: stavo attivando anche ottimizzazioni/estensioni per Core2Duo. I programmi erano abbastanza puliti da consentire un rigoroso aliasing.
finché il compilatore viene eseguito con/switch veloce e gira su una CPU intel (il compilatore deve essere eseguito su una CPU Intel, non necessariamente sul programma compilato), si ottiene un codice più efficiente in generale. –