PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Performance von C/C++ Compilern


LudiKalell
2004-02-23, 23:07:52
Wollte mich nur mal informieren, wie's derzeit mit der Performance von C/C++ Compilern aussieht, kenne da eigentlich nur Intels Version (neueste ist die 8.0 ?!) und Microsoft's Compiler der im .Net Visual Studio dabei ist

wenn man absolute Performance möchte, und keine Kosten spart *hüstel*, welcher Compiler (nicht unbedingt einer der beiden) ist da effektiver ?

bitte keine Antwort wie "am schnellsten is eh Assembler!".. und dass das von Anwendung zu Anwendung durchaus unterschiedich sein kann (siehe Spec Benchmarks) ist auch klar.. aber hat einer evtl. n Link zu was fundiertem ?

Ich dank jeder hilfreichen Seele *Ameeen*

-=Tötet keine Vögel! Wir vögeln ja auch keine Toten=-

Stone2001
2004-02-23, 23:22:30
Definiere 'schnell' bei einem Compiler!
'schnell' im Sinne von Übersetzungszeit, also Zeit, die der Compiler braucht ein Programm zu übersetzten oder im Sinne von Ausführungszeit, also die Zeit, die ein Programm zu ausführung braucht.

LudiKalell
2004-02-23, 23:24:13
Runtime "natürlich", schliesslich wird in den Spec Benchs auch nich die Compilierzeit gemessen ;)

sorry für's Missverständnis

Stone2001
2004-02-23, 23:31:52
Naja, aber beim Linux-Kernel wird z.b. die Übersetzungszeit gemessen!

Von der Performance her, würde ich den Intel-Compiler vorne sehen. Der gcc 3.3 ist glaub ich etwas langsamer und k. A. ob sonst noch irgendwelche Compiler mit denen mithalten können.

(Muß aber sagen ich kenn mich auf dem Gebiet nicht wirklich auskenne)

Exxtreme
2004-02-23, 23:54:22
Der schnellste Compiler ist definitiv der von Intel. Wie gut der von Microsoft optimiert weiss ich nicht. Der GCC kann nicht wirklich gut optimieren, ist aber auch nicht schlecht.

LudiKalell
2004-02-24, 00:19:38
Microsoft war mal nur Mittelmass, soll aber mit dem letzten Release des .Net Studios gehörig zugelegt haben

und der gcc 3.2 ist weitaus schneller mit -O2 als der Microsoft Compiler ausm VS6 (in nem spez. Fall doppelt so schnell)

micki
2004-02-24, 00:59:07
http://www.radgametools.com/grasdk.htm

mit intel8 und devstudio6 getestet mit p4 2ghz und athlon2000+

intelcompiler mit verschiedenen einstellungen auf maximal 28fps gebracht (auch mit vectorisierung an,egal ob auf einen p3 oder p4 compiliert)

der compiler vom devstudio6 35fps.


auf meinem gameboy hat sich die performance verdoppelt als ich den ganzen code auf c (von c++) 'portiert' hab beim gcc.
viele benches in denen intel glänzt sind auch irgendwelche c anwendungen. c++ scheint da noch schwierigkeiten zu machen.

MfG
micki

LudiKalell
2004-02-24, 02:48:43
compiler vom devstudio6..

ist das der MS Compiler der beim VS C++ 6.0 dabei war ? der also JAHRE alt ist ? und der soll schneller sein als der kürzlich releaste Intel Compiler ?! versteh ich irgendwas falsch ?

micki
2004-02-24, 07:21:48
Original geschrieben von LudiKalell
compiler vom devstudio6..

ist das der MS Compiler der beim VS C++ 6.0 dabei war ? der also JAHRE alt ist ? und der soll schneller sein als der kürzlich releaste Intel Compiler ?! versteh ich irgendwas falsch ?

die compiler sind richtig erkannt worden von dir... die zahlen sind objektiv. ich hab bewust die benches vom nicht eigenen code genommen, du kannst dir ja das granny sdk besorgen, in eine spieleumgebung einbinden und deine zahlen dafür rausfinden.

übrigens ist die dateigröße die vom Intel compiler erzeugt wird auch um einiges größer... ich würd durchaus vermuten dass dies nicht gerade cachefreundlich ist wenn der code einige MB größer wird (wenn man alle teile mit dem Intel compiler erzeugt) und deswegen die performance niedriger wird.

MfG
micki

Crushinator
2004-02-24, 11:16:20
Original geschrieben von LudiKalell
(...) wenn man absolute Performance möchte, und keine Kosten spart *hüstel*, welcher Compiler (nicht unbedingt einer der beiden) ist da effektiver ? Wenn man immens viel ohne direkten Gebrauch von SIMD rechnet, ist der von Intel eindeutig zu bevorzugen, weil der erzeugte Code je nach dem bis zu 300% (im vgl. zu VC6) schneller sein kann, denn ansonsten tun die sich wenig bis gar nichts. Mir ist von meiner Arbeit her kein Fall bekannt, wo der Intel Compiler langsameren Code außerhalb der Meßtoleranz erzeugte. Wenn man allerdings große und nicht gerade rechenintensive Projekte übersetzen möchte, ist der Intel Compiler oft von Nachteil, weil er sich für's Kompilieren ganz schön viel Zeit nimmt.

Ich beziehe mich hier übrigens auf die Versionen 5 bis 7 des Intel Compiler, und laß' die GCC-Versionen mal außen vor, denn jene < 3.x sind auf gleicher Höhe bzw. oft unterhalb des VC6 einzuordnen, wohingegen die 3.x oft performanteren Code (als VC6) erzeugen können, wenn auch der Unterschied nicht wirklich so groß ausfallen mag.

Bolands C++ Builder V6 ist dafür berühmt nicht sonderlich schnellen Code zu erzeugen, dafür glänzt er mit ganz anderen Vorteilen, nämlich einer fast traumhaften IDE und der VCL. Ideal wäre die IDE vom BCC6 mit wahlweisem IC als Untersatz.

Mit VS.NET steh' ich z.Z. einwenig auf Kriegsfuß und kann deshalb keine objektive Meinung dazu äußern. =)

zeckensack
2004-02-24, 13:18:39
Original geschrieben von LudiKalell
Microsoft war mal nur Mittelmass, soll aber mit dem letzten Release des .Net Studios gehörig zugelegt haben

und der gcc 3.2 ist weitaus schneller mit -O2 als der Microsoft Compiler ausm VS6 (in nem spez. Fall doppelt so schnell) Ack (http://www.forum-3dcenter.org/vbulletin/showthread.php?postid=718164#post718164)

LudiKalell
2004-02-24, 18:09:04
@crushinator

sag mal was ist VCL .. visua class library oder wat ? und was hast du gegen das VS Net ?

und wie ist der Borland Builder wenn man Win32 APi proggt ? gibt's da irgendwelche Einschränkungen ?

und @micki:

hast du die Flags -QxW/QxK/QxN verwendet (gibt's so glaub ich nur bei der Linuxversion, bei Windows müsstes ähnlich funzen) ?

micki
2004-02-24, 19:09:19
ja, wie gesagt, alle optimierungen waren an, in verschiedenen kombinationen sogar... vielleicht hat ja noch jemand granny und kann das verifizieren :)

MfG
micki

Lord Nikon
2004-02-24, 19:17:05
Original geschrieben von LudiKalell
@crushinator

sag mal was ist VCL .. visua class library oder wat ?
Auch wenn ich nicht crushinator bin:
VCL ist gleiche wie Microsoft MFC nur besser strukturiert.
Ich habe bislang beim c++ Builder 6.0 noch keine Einstränkung gefunden im Zusammenhang mit der WinApi.

Coda
2004-02-25, 00:55:58
Ich würd gern mal SPECfp und SPECint auf Intel C++ 8, GCC 3.4 und MS C++ 7.1 (.NET 2003) sehen.
Aber so Benchmarks gibt's NIRGENDS :/

LudiKalell
2004-02-25, 22:01:51
hab letztens gelesen wenn du die Benchs haben willst musst du ne Schweine Kohle blättern.. daran wird's wohl liegen..