Compilergeschwindigkeit MSVC/gcc/Intel C Compiler
-
IMHO spielt die Compilezeit keine Rolle... ob der nun 1,5 sec oder 1,8 sec benötigt ist mir egal...
Das wichtige ist das Ergebnis (also ob die EXE/DLL stimmt und schnell ist).
-
auf Codeproject.com wurde mal Werbung für ein Tool gemacht, das den "Compile-Prozess" unter MSVC wesentlich beschleunigt... muss mal suchen...
-
Vertexwahn schrieb:
auf Codeproject.com wurde mal Werbung für ein Tool gemacht, das den "Compile-Prozess" unter MSVC wesentlich beschleunigt... muss mal suchen...
Haha, dreht einfach alle Optimerungen ab?
MfG SideWinder
-
gcc erzeugt schlechten code, gross und langsam...
-
Wenn bis viele Template Bibliotheken eingebunden werden steigt die Compilezeit und vor allem die Linkzeit schnell in Höhen die man in seinen kühnsten Träumen nicht geahnt hätte. Da macht es Sinn alle Optimizationen (bringt etwas) und auch die Debuginformationen (bringt sehr viel) auszuschalten. Spart etwa 5 Sekunden (1-2 Objektdateien und Linken) bei meinem momentanen Projekt.
Ich benutz MinGW/G++.
-
darthdespotism schrieb:
MS hääte nicht wirklich interesse daran den VC ebenfalls unter GPL zu stellen um ein paar geschwindigkeitsboni rauszubekommen.
Bräuchten sie auch nicht, weil sie die Technik adaptieren würden, nicht aber die Implementation
-
Das hängt eigentlich stark vom Code ab. So gibt es Situationen, wo der GCC schnelleren Code erzeugt als der ICC und anders.
-
Also meistens kompiliert man doch zum entwickeln und somit zum testen. Dafür benötige ich doch keine Code-Optimierung, dafür aber Debuginfos. Und was macht eigentlich die Compilezeiten so lang? Z.B. Headerdateien die schlecht organisiert sind. Wenn man etwas Zeit in die Header-Organisation seiner Projekte investiert, hat man dafür längerfristig kürzere Compile-Zeiten. Weiterhin haben alle modernen Compiler PCH (Pre Compiled Headers). Diese machen bei komplexen Projekten und Templates sehr viel aus. SmartWin++-Header werden mit PCH um ein vielfaches schneller kompiliert. Habe nicht schlecht gestaunt, nachdem ich bei meinen simplen Projekten vorher davon wenig spürte.
Ich kenne jemanden, der arbeitet im wissenschaftlichen Bereich mit C++. Die kompilieren immer auf nem Cluster.
Dafür nutzen sie IncrediBuild.
Also, es gibt immer Lösungen. Man kann bei sich selbst anfangen (Headers) über serienmäßige Tools (PCH) bis hin zu extra Tools (IncrediBuild).
-
Artchi schrieb:
Wenn man etwas Zeit in die Header-Organisation seiner Projekte investiert, hat man dafür längerfristig kürzere Compile-Zeiten. Weiterhin haben alle modernen Compiler PCH (Pre Compiled Headers). Diese machen bei komplexen Projekten und Templates sehr viel aus.
Bei Boost.Foreach + Boost.Variant + Boost.Bind hab ich da aber andere Erfahrungen gemacht. PCH haben die Compilezeit verlängert und nicht gerade unbedeutend. Sobald der PCH eine kritische Größe überschreitet (welche dank Debuginfos beim G++ schnell erreicht ist) wird das Laden des PCH langsamer als das Parsen des eigentlichen Codes!
-
Hem, kann sein. Ich habe GCC nie benutzt, sondern MSVC und der hat schon seit Jahren PCH-Support. Und SmartWin hats verkürzt, wenn ich MSVC benutze. GCC kann ich nichts sagen... müssen die GCC-Jungs halt noch optimieren.
-
vista schrieb:
gcc erzeugt schlechten code, gross und langsam...
Kann ich so nicht unterschreiben. Schaue mir öfters mal an, was der GCC als Assembler erstellt, und das sieht schon sehr ordentlich aus. Bzgl. der Codegrösse, da soll sich ja seit Version 4 einiges geändert haben. Leider bietet mingw.org dafür immer noch keinen offiziellen Build an. Allerdings gibt es für Windows auch alternative Builds.
-
OK, danke für die rege Beteiligung! Falls die Frage falsch verstanden wurde: Es geht mir dabei um die Geschwindigkeit des erzeugten Codes und nicht um die Compilegeschwindigkeit...
-
Oft hab ich gelesen, dass der Intel Complier den schnellsten Code erzeugt...obwohl niemals an richtige Complexen sachen, daher weiss ich nicht, ob das tatsächlich so ins Gewicht fällt.
-
Zeus schrieb:
Oft hab ich gelesen, dass der Intel Complier den schnellsten Code erzeugt...obwohl niemals an richtige Complexen sachen, daher weiss ich nicht, ob das tatsächlich so ins Gewicht fällt.
INTEL-Compiler erstellen (logischerweise) für INTEL-Prozessoren optimierten Code
daher dürfte der auf eine INTEL-Prozessor durchaus der schnellste sein, da die anderen Compiler mehr Wert auf ähnliche Geschwindigkeit bei allen / den gängigsten x86-Prozessoren legen (müssen).