Visual Studio 2010 lahmt



  • Hallo zusammen!

    Hat jemand von euch auch die Erfahrung gemacht, dass VS 2010 extrem langsam buildet? Also verglichen mit den Vorgängerversionen ist das wirklich eine Zumutung. Ich habe das gleiche Projekt auf VS 2005, 2008 und 2010. Es ist quasi der selbe Code und die Buildzeiten liegen Welten auseinander. In 2005 brauch ich ca. 7 Minuten bei einem kompletten Rebuild, 2010 braucht dafür 25 Minuten.

    Es geht um ein C++/MFC Projekt mit vielen externen Libs.
    In beiden Fällen Release 32 Bit.

    In VS 2010 hab ich 8 parallele Builds erlaubt, weil ich auch 8 Kerne habe.

    Kennt jemand noch eine Einstellung/Tweak um dem Teil Beine zu machen? So machts nämlich echt keinen Spass. Auch wenn nicht immer ein kompletter Rebuild zu machen ist, summieren sich die Zeiten auch bei kleineren Änderungen immer wieder.

    Gruß
    Source



  • How about PCH? Benutzt du das, falls ja, mit identischer Konfiguration?

    In VS2010 sind die Standard-Libraries umfangreicher geworden, was auch zu größerem Parse-Aufwand und also zu längeren Übersetzungszeiten führt. Wenn du die fraglichen Bibliotheken nicht im PCH hast, skaliert der Effekt mit der Zahl der Units.



  • PCHs werden in allen meinen Projekten verwendet. Einstellung ist jeweils "Use".



  • Link Time Code Generation ist in beiden Builds an?
    Wo genau wird denn die meiste Zeit verbraucht? (Tools > Options > Projects and Solutions > Visual C++ Project Settings > Build Timing)



  • Link Time Code Generation ist in beiden aus.
    Wegen Zeitverbraucht:
    Es dauert kein einzelner Schritt sehr lange, sondern alle Einzelschritte gemeinsam dauern einfach sehr lange.

    Aber ich glaube damit muss ich leben. Hab jetzt ein weit kleineres Projekt auch mal nach VS 2010 konvertiert und auch dieses dauert bei gleichen Einstellungen doppelt so lange wie unter 2005.



  • Mit 8 parallele Builds heisst /MP8, oder? Mach daraus mal /MP4 und schau, ob es dann schneller wird. Es tönt paradox, aber ich habe das schon erlebt. Kann auch etwas mit der Festplatte zu tun haben.



  • /rant/ schrieb:

    Mit 8 parallele Builds heisst /MP8, oder?

    Eigentlich heißt das
    Options>Projects and Solutions>Build and Run>Maximun Number of parallel Projekt builds

    Den MP switch hatte ich früher einmal, musste ihn aber rausnehmen weil er inkomatibel mit dem Einbinden von tlbs ist. War zumindest im 2008er so. 2010 hab ich es bisher gar nicht versucht.



  • Source2702 schrieb:

    Hat jemand von euch auch die Erfahrung gemacht, dass VS 2010 extrem langsam buildet?

    Indirekt, VS2010 wurde getestet, eingeführt und zügig wurden topaktuelle Rechner mit i7 und SSD angeschafft.

    Aus meiner Perspektive ist's also schneller geworden, aber ich würde sagen, dass zwischen VS2010 und den neuen Rechnern Zusammenhänge bestehen... 😉



  • Reden wir da eigentlich von einem Debug oder einem Release Build? Weil im Release Build wird's wohl einfach daran liegen, dass der Optimizer mehr macht...



  • @dot:
    Wir reden von einem Release-Build. Und dass der Optimizer vier mal mehr bzw. vier mal besser optimiert als unter 2005 halte ich für ein Gerücht.

    @xin:
    8 Kerne, 8 GB RAM, und 120GB SSD sollten reichen.

    Ich glaub einfach, dass das neue MsBuild trotz aller Vorteile die es vielleicht bietet, einfach nur lahm ist. Produktiver bin ich auf alle Fälle mit den älteren VS Versionen.

    Trotzdem danke für eure Tipps, ich denke ich muss damit einfach leben.



  • Source2702 schrieb:

    Ich glaub einfach, dass das neue MsBuild trotz aller Vorteile die es vielleicht bietet, einfach nur lahm ist.

    Es ist schon vergleichsweise lahm – es war deutlich spürbar, als Delphi/C++Builder auf MSBuild umgestellt hatten –, aber es würde mich schwer wundern, wenn du die meiste Zeit im Buildsystem verbringst. Nimm mal ein Tool, das anzeigt, welcher Prozeß wie viel CPU-Zeit verbraucht hat (z.B. Process Explorer oder der Win8-Taskmanager), dann sollte eigentlich fast alles an cl.exe und dem Linker hängenbleiben.



  • Natürlich verbringe ich nicht die meiste Zeit beim Builden, aber es ist eben oft der Fall, dass ich Bugs ausbessere, bei denen ich mehrmals hintereinader kompilieren muss. Wenn es nicht VS 2010 sein muss, dann verwende ich 2005 weil ich mir dadurch einfach viel Zeit spare.

    Die Analyse mit ProcessExplorer werde ich machen. Hoffe es bringt was. Danke



  • Source2702 schrieb:

    Natürlich verbringe ich nicht die meiste Zeit beim Builden

    Nein, ich meinte, daß während eines Builds die Zeit nicht vom Buildsystem, sondern hauptsächlich vom Compiler und Linker verbraucht werden sollte, so daß MSBuild nicht wirklich eine Rolle spielt bei der Entwicklung der Build-Zeiten.

    Du kannst auch mal eine Header-Abhängigkeitsanalyse machen und evtl. mehr Header in den PCH aufnehmen. In C++Builder gibts dafür diesen PCH-Wizard, der ausgehend von der Häufigkeit der Einbindung eines Headers und dessen Gewicht (LOC) den optimalen PCH erstellt; sowas vermisse ich in VC leider noch.



  • Ich bezweifle auch sehr, dass du tatsächlich einen relevanten Teil der Zeit im Buildsystem verbringst. Oder besteht dein Projekt vielleicht aus tausenden winzig kleinen Dateien!? Wie du Timings nehmen kannst, hab ich ja vorhin schon gepostet...



  • Ich würde auch versuchen, die Header-Dateien aufzuräumen.
    Header Hero sowie Include File Dependencies Watcher würde ich dir dazu empfehlen.


Log in to reply