Warum ist VS2005 so langsam



  • Also ich habe hier ein Projekt, das kann ich unter Visual Studio v6.0 Enterprise in 13 Sekunden kompilieren und in Visual Studio 2005 Professional benötigt das Kompilieren 1:01 Minuten. Ausgehend von einem bereinigtem Workspace. Also mehr als 4x so lange, das ist doch echt eine Zumutung. Welche Erfahrungen habt ihr denn so gemacht?



  • das ist glaub ich wegen dem ganzen framework und so.


  • Mod

    Ja der Compiler braucht länger... aber wirklich interessiert mich das nicht.
    Der Compiler ist ja auch Meilen besser...

    Wieviel KB Sourccode? Precompiled Header? Sourcen LOkal oder im Netz?



  • Also mein Projekt enthält mittlerweile 218 *.c, *.h, *.rc mit 2.8MB Zeichen (5% Kommentare vieleicht). Nicht mitgerechnet habe ich Bilder, Icons, Text-Resourcen etc. das sind dann auch wieder einige Hundert Dateien. Dann werden noch einige selbstgebastelte LIBs unter anderem auf Basis zlib und OpenSSL miteingebunden. Der Quellcode liegt bei mir auf der Festplatte und wird lokal kompiliert. Ich kann ja schon nachvollziehen, dass der VS2005 besser sein soll, aber solange der Code noch in der Testphase ist, kompiliere ich mit VS6, weils halt schneller geht, und als Release Kompiler wolle ich das Ganze dann unter VS2005 kompilieren. Ab und zu lasse ich den VS2005 mal drüberrutschen um den Quellcode bei Fehlermeldungen kompilerspezifisch anzupassen (z.B. mit VS6 benutze ich "localtime" und mit VS2005 "_localtime32", das wird dann per Präprozessor-define entsprechend im Quellcode umgeschaltet). Da ich keine Ahnung habe was die einzelnen Kompiler so anstellen, verlasse ich mich auf die Aussagen wie z.B. von Martin Richter dass der VS2005 besser sein soll.


  • Mod

    Du musst doch nicht immer alles neu kompilieren.
    Wenn Du in der Entwicklung bist geht es doch flink. Bei mir frisst der Linker die Zeit und nicht der Compiler....



  • Precompiled Header würden sicher auch noch einen Schub bringen.



  • Ok, also ich hab da in den Projektsettings von VS6 nachgeschaut und festgestellt, daß es auf "automatisch verwende vorkomilierte header" steht. Schalte ich das testhalber mal aus, dann dauert der Build unter Vs6 ca. 40 Sekunden. Hmm leider finde ich unter Vs2005 nicht diese Einstellung mit dem automatischen Zeugs. Da gibts dann nur Vorkompilierte Header nicht verwenden - verwenden - erzeugen. Leider schein das nicht recht zu funktionieren mit dem Vorkompilierten header. Es erscheint die Fehlermeldung Unerwartetes Dateiende während der Suche nach dem vorkompilierten Header. Haben Sie möglicherweise vergessen, im Quellcode "#include "_precompiled.h"" einzufügen? obwohl ich die datei eingebunden habe. Wer kann helfen? Anmerkung ich habe die *.pch Datei erzeugt und auch unter "Vorkompilierte Headerdatei" eingtragen



  • Die Headerdatei muss in jeder .cpp-Datei ganz oben als allererstes eingebunden werden (damit keine defines den Inhalt der Headerdatei ändern können).



  • Badestrand schrieb:

    Die Headerdatei muss in jeder .cpp-Datei ganz oben als allererstes eingebunden werden (damit keine defines den Inhalt der Headerdatei ändern können).

    Das ist soweit bekannt und wurde auch eingehalten. Eigentlich steht in jeder *.c Datei nur das include auf eine einzige Datei, in diese, nennen wir's mal Hauptinclude-Datei, habe ich alle anderen Include Dateien includiert. In dieser Hauptinclude Datei stehen die Microsoft Include Dateien aus dem Platform SDK ebenfalls wieder ganz am Anfang. Um diese Dateien handelt es sich ja dann auch, wenn man mit Precomplied Headern arbeiten will, da sich projektbezogen dort niemals etwas ändern sollte, wenn ich das so richtig verstanden habe. Also ich habe da auch noch keine nützliche Anleitung zum Erstellen entdeckt, daher hackts anscheinen ja bei mir.



  • Gibts irgendwo eine Anleitung?



  • Hauptinclude-Datei, habe ich alle anderen Include Dateien includiert

    Genau das sollte man vermeiden.



  • knivil schrieb:

    Hauptinclude-Datei, habe ich alle anderen Include Dateien includiert

    Genau das sollte man vermeiden.

    Ok, das war ja auch nicht als der Weisheit letzter Schluss gedacht. Also diese "Hauptinclude-Datei" ist so aufgebaut, dass am Anfang das ganze Micrsoftzeugs steht: windows.h, winsock.h, commctrl.h, etc. und danach dann meine Headerdateien aufgelistet sind. Wie baue ich jetzt mein Projekt sinnvoll auf, um beim Kompilieren mit Precompiled Headers arbeiten zu können?



  • ich habe gerade kein vs zur hand, deshalb aus dem gedächtnis:

    in den projekteigenschaften stellst du zuerst "use precompiled headers" ein. bei "create trough..." (o.ä.) trägst du den pfad zu der include-datei ein, die alle anderen includes beinhaltet.

    dann suchst du dir eine beliebige c-datei in dem projekt aus. ich nehme in der regel main.c oder ein äquivalent. für die rufst du die projekteigenschaften auf (rechtklick -> eigenschaften) und stellst dort bei precompiled header "create precompiled header" ein.

    fertig.



  • prikompeilt hedda schrieb:

    dann suchst du dir eine beliebige c-datei in dem projekt aus. ich nehme in der regel main.c oder ein äquivalent. für die rufst du die projekteigenschaften auf (rechtklick -> eigenschaften) und stellst dort bei precompiled header "create precompiled header" ein.

    üblicherweise nimmt man dafür ein eigenes .cpp file, welches nur aus #include "blubb.h" besteht



  • Also danke nochmal für die Hilfe, ich habs jetzt hinbekommen. Die Compiliergeschwindigkeit liegt nun im Bereich von VS6, das ist für mich zufriedenstellend.


Log in to reply