Compilervergleich: Intel vor Microsoft vor GCC

In einem umfangreichen Vergleich mussten die GCC, Intels C++-Compiler und der Compiler aus Microsofts VisualStudio in typischen Benchmarks gegeneinander antreten.

In Pocket speichern vorlesen Druckansicht 21 Kommentare lesen
Lesezeit: 2 Min.
Von
  • Robert Lippert

Um halbwegs aussagekräftige Benchmarks zu Compilern zu erhalten, muss einiger Aufwand betrieben werden. Compiler gibt es in verschiedensten Ausprägungen, zum Teil auf spezielle Befehlssätze und Prozessoren optimiert. Einen Versuch macht Guillaume Louel vom französischen Hardwaremagazin HardWare.fr – und vergleicht die GCC, Intels C++-Compiler und den Compiler aus Microsofts VisualStudio anhand einer Reihe standardisierter Benchmarks.

Der Artikel gibt Aufschluss darüber, welchen Einfluss die Wahl des Compilers und seiner Optimierungseinstellungen auf die Performance eines Programms hat. Für die Benchmarks wurde auf verschiedene Testreihen der Standard Performance Evaluation Corporation (SPEC) zurückgegriffen, die auch zu allen Konfigurationen kompatibel waren. Hardwareseitig wurde dabei auf Prozessoren vom Typ Intel Core i7 2600k, AMD Phenom II 975 und AMD FX 8150 getestet, als Betriebssystem Windows 7 mit Service Pack 1 verwendet. Entsprechend haben die Ergebnisse des Benchmarks auf keine Aussagekraft für andere Betriebssysteme.

[Update vom 13. März, mit Dank an die Leser von heise Developer] Verallgemeinert kommt Louel zu dem Ergebnis, dass Intel mit seinem Compiler die Nase vorn hat. Die GCC litten unter anderem daran, dass sich viele ihrer Tuning-Optionen letztlich als unproduktiv erwiesen hätten. Der VisualStudio-Compiler sei damit aufgefallen, dass er in der klassischen Variante spürbar langsamer ist, da er zusätzlichen Code für den x87-Befehlssatz erzeugt – performanter sei es, hier den SSE2-Befehlssatz zu verwenden. Entwickler müssen jedoch auch immer ihren konkreten Anwendungsfall im Auge halten – je nach Aufgabe und Hardwareumgebung können die Ergebnisse sehr unterschiedlich ausfallen. [/Update] (rl)