C++ Visual Studio 2005 - Multithreaded kompilieren?

  • Ersteller Ersteller Green Mamba
  • Erstellt am Erstellt am
G

Green Mamba

Gast
Moin zusammen,

weiß jemand wie man VS2005 dazu bewegen kann, alle CPU-Kerne zum kompilieren zu nutzen? Standard mässig läuft immer nur ein cl.exe-Prozess zur gleichen Zeit.

Viele Grüße,
Mamba
 
Moin.

Also das Programm nur durchs kompilieren multithreaded fähig zu machen ist so nicht möglich. Du musst bereits das Programm vom Quellcode her so programmieren, dass es Aufgaben in mehrere Threads aufteilt.

Ist nicht ganz einfach, aber unter www.planetsourcecode.com solltest du einige Beispiele bzgl. Multithreading finden können. Bin gerade auch erst dabei dies zu erlernen, daher kann ich leider keine konkreteren Tipps geben, hoffe aber der Link hilft dir.
 
Hab mal gehört, dass sowas mit IncrediBuild gehen soll. Wieß nur leider nicht, wie teuer es ist, und ob es mit MSVC 2005 läuft. Erfahrungsgemäß kann ich dir aber sagen, dass oft eine HDD mit schnellen Zugriffszeiten mehr bringt, als die CPU. Ist allerdings schon was her, dass ich unter Windows geproggt habe, daher kann sich das auch schon wieder alles geändert haben

@MrDesperados: Er will nur, dass der Compiler selber alle Kernen nutzt, um zu kompilieren, nicht die Software die dabei rauskommt
 
er will mit vs05 multithreaded kompilieren, nicht die programme multithread-fähig machen ;)
 
Genau. Mir gings um den Compile-Vorgang. Dieser soll multithreaded ablaufen. Linux kann das schon sehr lange sehr gut durch einfache Angabe eines Flags und der gewünschten Core-Zahl (make -j2 glaube ich). Das muss doch auch irgendwie mit VS gehen?
Die Festplatte ist erst mal außen vor, mir gehts um den Compile-Vorgang.
 
Hab da was gefunden, was Compiler Informationen sein könnten:

http://osdir.com/ml/apache.logging.log4cxx.user/2006-08/msg00003.html

Es muss wohl eine XML Datei für die Einstellungen des Compilers angepasst werden. Es gibt dort in der Datei wohl eine Option namens multithreaded= und diese muss den Wert "true" besitzen. Ich hoffe das hilft nun. Dennoch, habe im WWW gelesen, dass alleine das compilieren als MT Anwendung kaum bis gar keinen Geschwindigkeitsunterschied bringt, wenn die Anwendung vom Sourcecode dafür nicht ausgelegt ist.
 
Nochmal: er will dass der Compiler Multithreading macht, nicht sein Programm, soweit ich das verstehe bezieht sich der Link aber wieder darauf.

Ist wohl mit VS '05 nicht so einfach möglich(siehe edit), bzw nur mit mehreren Projekten, aber das hier könnte helfen. (hierüber über google: "vs 2005 multicore compile", sry aber musste ich sagen ;))
/edit: hm geht wohl doch, schalter /MP, wenn das forum nicht lügt.
 
Zuletzt bearbeitet:
Das habe ich schon verstanden, lies dir mal meinen Post genau durch. Der letzte ist NUR auf den Compiler bezogen. Außerdem beinhaltet der Link ausschließlich Informationen zum Compiler.
 
Super Jungs, danke euch. Das MPCL hört sich vielversprechend an. Das Incredibuild allerdings noch viel vielversprechender. Letzteres werde ich hier mal mit ein paar Rechnern testen! :daumen:
 
Der Multi-Core Build Prozess wurde erst in VS 2008 richtig verbessert. Leistungssprünge von 30 % sind erreichbar. Dazu aktiviert man den /MP Switch.

Siehe http://msdn.microsoft.com/en-us/library/bb385193.aspx

Visual C++ Compiler Options

/MP (Build with Multiple Processes)


The /MP option can reduce the total time to compile the source files on the command line. The /MP option causes the compiler to create one or more copies of itself, each in a separate process. Then these copies simultaneously compile the source files. Consequently, the total time to build the source files can be significantly reduced.
 
Hallo,
ich beschäftige mich seit kurzem mit c++ im visual studio 2005...
Ich hatte ein paare c++-code in einem Projekt geschrieben zum üben. Aber seit Gestern kann ich sie nicht mehr mit der Strg+F5 taste kompilieren. und sogar auf der Leiste unter "Debuggen" ist die option "Dbuggen starten" nicht auswählbar... Kann mir jemand sagt was ich dabei machen kann um meinen Code wieder kompilieren?
Anderes Problem: Wie kann ich eine andere main-function schreiben und kompilieren ohne die alte unbedingt zu löschen?
Danke,
jibyz
 
Wie kann ich eine andere main-function schreiben und kompilieren ohne die alte unbedingt zu löschen?
Gar nicht. main() darf es nur einmal geben. Woher soll die runtime sonst wissen, wo der Einspringpunkt ist?
 
ok danke!
Falls ich mal mehrere main() geschrieben habe gibt es aber eine Möglichkeit die andere zu deaktivieren ?
 
hi,
hab wieder ein problem mit visual studio und zwar ich kann meinen code nicht mehr kompilieren... meine Projektmappe ist sogar leer! wie kann ich sie zurücksetzen?
danke.
 
Hallo zusammen,

MPCL von todobits geht ja leider nur bis VS2008, kennt jemand eine gute Alternative dazu, die man auch mit VS2010 nutzen kann? :)

Gruß, DudeAix
 
habe mal einen neuen Thread eröffnet ... aber noch kurz: habe in VS C++ eine Projektmappe mit vielen Scourcecode in einzelnen Dateien. So das ohne MPCL das Erstellen des Projekts ca. 50 Min dauert und mit dem Tool nur 3-4 min (habe 8 Kerne). Die Option mit dem /mp ist hierbei weniger sinnvoll, da man dabei alles umstellen muss. Hättest du ggf ein Tipp?
 
Zurück
Oben