Intel-C++-Compiler: Optimaler Code für den Prozessor

Auch auf AMD-Prozessoren bringt also der Intel-Compiler fast immer Performancevorteile gegenüber dem Microsoft-Compiler, jedoch fallen diese deutlich geringer aus, als auf Intel-Prozessoren. Dies liegt daran, dass Microsoft AMD64-optimierten Code erlaubt. Verwendet man AMD64-optimierten Code, so fällt Microsoft nicht ganz so weit in der Performance zurück, wie mit EM64T-optimierten Code.

Überraschend ist diesem Zusammenhang auch das Ergebnis, wenn man für den falschen Prozessortyp optimierten Code verwendet. In der Scimark-Gesamtwertung
ist AMD64-optimierter Code auf Intel-Prozessoren etwa 25 Prozent langsamer. EM64T-optimierter Code ist dagegen auf AMD-Prozessoren nur 5,5 Prozent langsamer.

Muss man sich zwischen den beiden Optimierungen entscheiden, so sollte also nicht nur wegen des höheren Marktanteils von Intel der EM64T-optimierte Code verwendet werden. Der Test zeigt, dass AMD-Prozessoren generell wesentlich besser mit schlecht optimiertem Code, der in der Praxis relativ häufig zu finden ist, umgehen können.

Deutlich wird auch, dass man sich vor „Überoptimierungen“ schützen muss. Der Scimark beinhaltet so gut wie keine Aufgabenstellung, die typisch für SSE3 und SSSE3 ist, mit dem Ergebnis dass der SSE3-Code 0,5 Prozent bis 1,4 Prozent langsamer ist. SSSE3 führt wiederum zu einer Steigerung der Geschwindigkeit von 0,32 Prozent. Der Verzicht auf SSE3 zugunsten der Kompatibilität mit allen 64-Bit-Prozessoren ist hier also dringend angeraten.

Komplexer sind die Ergebnisse in der 32-Bit-Welt. Anders als in der 64-Bit-Welt kann nicht von SSE2 als Minimum-Standard ausgegangen werden. Benötigt man Unterstützung für Intels Pentium 3, den man heute noch in vielen Tablet-PCs findet, so muss man mit SSE Vorlieb nehmen.

Für Prozessoren aus der Generation Pentium 2 und Pentium Pro gibt es die Möglichkeit auch ganz ohne SIMD-Befehle auszukommen. Macht man von dieser Möglichkeit Gebrauch, um eine möglichst hohe Kompatibilität zu erreichen, so heißt der Sieger klar Microsoft.

Bei reiner Verwendung der 80×87-FPU-Befehle liegt der Microsoft-Compiler zwischen 4,7 Prozent (Pentium 4) und 11,7 Prozent (Athlon) vor Konkurrent Intel. Dabei ist interessant, dass auf dem Athlon 80×87-FPU-Befehle schneller ausgeführt werden, als SIMD-Befehle. Zusätzlich bekommt man noch den Vorteil einer höheren Genauigkeit, da die 80×87-Register intern mit 80-Bit arbeiten, anstelle von 64-Bit bei den XMM-Registern.

Dass AMD bei den 80×87-Instruktionen schneller ist als Intel, ist kein Geheimnis. Üblicherweise erreicht man aber auch bei AMD-Prozessoren mit SSE2 eine höhere Geschwindigkeit. Der Scimark 2 stellt hier eine Ausnahme da.

Themenseiten: Anwendungsentwicklung, Intel, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Intel-C++-Compiler: Optimaler Code für den Prozessor

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *