Ich hoffe, das hilft mehr als weh tut :)
ich eine kleine Compiler Schießerei habe irgendwann vor über ein Jahr, und ich bin Speicher abgehend.
- GCC 4.2 (Apple)
- Intel 10
- GCC 4.2 (Apple) + LLVM
ich mehrere Vorlagen schwere Audiosignalverarbeitungsprogramme getestet, die ich geschrieben hatte.
Kompilierungszeiten: Der Intel-Compiler war bei weitem der langsamste Compiler - mehr als '2x mal langsamer' als ein anderer gepostet zitiert.
GCC behandelt tiefe Vorlagen sehr gut im Vergleich zu Intel.
Der Intel-Compiler generiert riesige Objektdateien.
GCC + LLVM ergab die kleinste binäre.
Der generierte Code kann aufgrund der Konstruktion des Programms erhebliche Abweichungen aufweisen und wo SIMD verwendet werden könnte.
Für die Art, wie ich schreibe, fand ich, dass GCC + LLVM den besten Code generierte. Für Programme, die ich vorher geschrieben hatte, nahm ich Optimierungen ernst (wie ich geschrieben habe), Intel war im Allgemeinen besser.
Die Ergebnisse von Intel variierten; es hat einige Programme viel besser gehandhabt, und einige Programme waren viel schlechter. Es hat die rohe Verarbeitung sehr gut gehandhabt, aber ich gebe GCC + LLVM den Kuchen, weil wenn es in den Kontext eines größeren (normalen) Programms gestellt wurde ... es besser gemacht hat.
Intel gewann für out of the box, Zahlenverarbeitung auf riesigen Datensätzen.
GCC allein generiert den langsamsten Code, obwohl es mit Messungen und Nano-Optimierungen so schnell sein kann. Ich ziehe es vor, diese zu vermeiden, weil der Wind mit dem nächsten Compiler-Release sozusagen die Richtung wechseln könnte.
Ich habe nie schlecht geschriebene Programme in diesem Test gemessen (d. H. Die Ergebnisse übertrafen die Distributionen der populären Leistungsbibliotheken).
Schließlich wurden die Programme über mehrere Jahre geschrieben, mit GCC als der primäre Compiler in dieser Zeit.
Update: Ich habe auch Optimierungen/Erweiterungen für Core2Duo aktiviert. Die Programme waren sauber genug, um ein striktes Aliasing zu ermöglichen.
Solange der Compiler mit/fast switch läuft und auf einer Intel-CPU läuft (der Compiler sollte auf einer Intel-CPU laufen, nicht unbedingt das kompilierte Programm), erhalten Sie insgesamt einen effizienteren Code. –