/MP (sestavení s více procesy)
/MP Možnost může snížit celkový čas kompilace zdrojových souborů na příkazovém řádku./MP Možnost způsobí, že kompilátor vytvořit jednu nebo více kopií samotného, každý v samostatném procesu.Tyto kopie pak současně zkompilujte zdrojové soubory.V důsledku toho celkový čas vytvoření zdrojové soubory se podstatně sníží.
/MP[processMax]
Arguments
processMax
(Volitelné) Maximální počet procesů, které můžete vytvořit kompilátoru.processMax Argumentu musí být v rozsahu od 1 až 65536.Jinak problémy kompilátoru upozornění D9014, ignoruje processMax argument a předpokládá, že maximální počet procesů je 1.
Vynecháte-li processMax argument, kompilátor zjišťuje počet účinné procesory počítače z operačního systému a vytvoří proces pro každý procesor.
Poznámky
/MP Volba kompilátoru můžete výrazně snížit čas sestavení při sestavování mnoho souborů.Pro zlepšení sestavení kompilátor vytvoří až processMax kopie sám a použije tyto kopie kompilace zdrojových souborů současně./MP Možnost platí kompilace, ale nikoli propojení nebo propojení čas generování kódu.Ve výchozím nastavení /MP možnost je vypnuta.
Zlepšení v sestavení závisí na počtu procesorů v počítači, počet souborů kompilovat a dostupnost systémových prostředků, jako je například kapacita I/O.Experimentujte s /MP možnost určit nejlepší nastavení pro vytvoření konkrétního projektu.Poradenství usnadňující rozhodnutí viz pokyny.
Nekompatibilní možnosti a funkce jazyka
/MP Možnost je nekompatibilní s některými volby kompilátoru a funkce jazyka.Pokud použijete volbu kompilátoru nekompatibilní s /MP možnost, vydá kompilátoru upozornění D9030 a ignoruje /MP možnost.Pokud použijete funkci aplikace nekompatibilní jazyk, problémy kompilátor chybu C2813a poté ukončí nebo pokračuje v závislosti na aktuální kompilátoru upozornění volbu úrovně.
[!POZNÁMKA]
Většina možností nejsou kompatibilní, protože pokud byly povoleny, souběžně vykonávajícího kompilátory by současně v konzole nebo určitého souboru zapisovat výstup.Výsledkem výstup by kombinovat a být zdeformované.V některých případech by kombinace možností provést výkon zhoršilo.
Následující tabulka uvádí možnosti kompilátoru a funkce jazyka, které jsou nekompatibilní /MP možnost:
Možnost nebo funkce jazyka |
Description |
---|---|
#Import direktivu preprocesoru |
Typy v knihovně typů převede do tříd C++ a poté zapíše do souboru záhlaví těchto tříd. |
Zkopíruje výstup preprocesoru na standardní výstup (stdout). |
|
Umožňuje přírůstkového sestavení. |
|
Zapíše seznam souborů zahrnout standardní chyba (stderr). |
|
Zapíše soubor předkompilovaný záhlaví. |
Diagnostické zprávy
Pokud zadáte funkci možnost nebo jazyk, který není kompatibilní se /MP možnost, zobrazí diagnostickou zprávu.Následující tabulka uvádí zprávy a chování kompilátor:
Diagnostická zpráva |
Description |
Kompilátor chování |
---|---|---|
C2813 |
#import Směrnice není kompatibilní s /MP možnost. |
Kompilace se ukončí, pokud úroveň pro upozornění kompilátoru jinak určuje možnost. |
D9014 |
Je zadána neplatná hodnota processMax argument. |
Kompilátor ignoruje neplatné hodnoty a předpokládá se hodnota 1. |
D9030 |
Zadaná možnost je kompatibilní s /MP. |
Kompilátor ignoruje /MP možnost. |
Pokyny
Měření výkonu
Měření výkonu pomocí sestavení celkový čas.Můžete změřit čas sestavení fyzické hodiny nebo můžete použít software, který vypočítá rozdíl mezi při sestavení spouští a zastavuje.Pokud má počítač více procesorů, může být výnos fyzické hodiny přesnější výsledky než měření času software.
Efektivní procesorů
Počítač může mít jeden nebo více virtuálních zpracovatelů, které jsou známé také jako účinný procesorů pro každou jeho fyzických procesorů.Každý fyzický procesor může mít jeden nebo více jader a pokud operační systém umožňuje hyperthreading pro základní, každý core se zdá být dva virtuální procesory.
Počítač obsahuje jeden procesor účinné má jeden fyzický procesor, který má jeden základní a hyperthreading je zakázáno.Počítač má naopak osm procesorů účinné má dvou fyzických procesorů, z nichž každá má dvě jádra, a všechny jader hyperthreading povolena.(8 Účinné procesory) = (2 procesory fyzické) x (2 jádra na fyzický procesor) x (2 účinné za z důvodu hyperthreading core procesory).
Vynecháte-li processMax argumentu /MP možnost, kompilátor získá počet procesorů účinné z operačního systému a potom vytvoří jeden proces na procesor účinné.Kompilátor nemůže zaručit však proces, který provede na konkrétní procesoru; operační systém provede rozhodnutí.
Počet procesů
Kompilátor vypočítá počet procesů, které budou používat kompilace zdrojových souborů.Hodnota je menší počet zdrojové soubory, které zadáte v příkazovém řádku a počet procesů, který explicitně nebo implicitně určíte s /MP možnost.Explicitně nastavit maximální počet procesů, pokud zadáte processMax argument /MP možnost.Nebo můžete použít výchozí nastavení, což se rovná počtu procesorů účinné v počítači, pokud vynecháte processMax argument.
Předpokládejme například, že zadáte na příkazovém řádku následující příkaz:
cl /MP7 a.cpp b.cpp c.cpp d.cpp e.cpp
V tomto případě kompilátor používá pět procesy, protože je menší z pěti zdrojové soubory a maximálně sedmi procesů.Nebo Předpokládejme počítač má dva procesory účinné a zadejte následující příkaz:
cl /MP a.cpp b.cpp c.cpp
V tomto případě operační systém hlásí dva procesory; proto kompilátor používá dva procesy v jeho výpočtu.Kompilátor proto provede sestavení s dvěma procesy protože menší dva procesy a tři zdrojové soubory.
Zdrojové soubory a sestavení objednávky
Zdrojové soubory pravděpodobně není kompilována ve stejném pořadí, ve kterém se zobrazí v příkazovém řádku.Přestože kompilátor vytvoří sadu procesů, které obsahují kopie kompilátor, naplánuje operační systém při každé proces spustí.V důsledku toho nemůže zaručit, že zdrojové soubory bude zpracován v určitém pořadí.
Zdrojový soubor je kompilován při procesu je k dispozici zkompilovat.Pokud existuje více souborů než procesy, první sady souborů sestavují dostupné procesy.Zbývající soubory jsou zpracovány proces dokončí zpracování předchozí soubor a je k dispozici pro práci na jednom zbývající soubory.
Nezadávejte stejný zdrojový soubor vícekrát na příkazovém řádku.Této situaci může dojít, například pokud nástroj automaticky vytvoří makefile založené na informace o závislostech v projektu.Pokud nezadáte /MP možnost kompilátor zpracovává postupně seznam souborů a znovu zkompiluje každého výskytu souboru.Však zadáte /MP možnost různých kompilátory může kompilovat stejného souboru současně.V důsledku toho různých kompilátory pokusí zapsat do stejného výstupního souboru současně.Jeden kompilátor bude získat výhradní přístup pro zápis do výstupního souboru a úspěšné a jiných kompilátorů se nezdaří s chyba přístupu k souboru.
Použití knihovny typů (#import)
Kompilátor nepodporuje použití #import s směrnice /MP přepnout.Pokud možno takto řešení tohoto problému:
Přesuňte všechny #import směrnic v různých vaše zdrojové soubory pro jeden nebo více souborů a potom tyto soubory bez kompilace /MP možnost.Výsledkem je sada souborů generovaných záhlaví.
Ve zbývající zdrojové soubory, Vložit # include směrnic, které specifikují generované záhlaví a poté kompilovat zbývající zdrojové soubory pomocí /MP možnost.
Nastavení projektu Visual Studio
Nástroj MSBUILD.exe
Visual Studiopoužívá MSBuild.exe nástroj k vytváření projektů a řešení.**/maxcpucount:**number (Nebo **/m:**number) možnost příkazového řádku nástroje MSBuild.exe můžete vytvořit více projektů současně.A /MP volba kompilátoru můžete vytvořit více jednotek kompilace současně.Pokud je vhodný pro aplikace, zlepšení doby sestavení vašeho řešení pomocí jednoho nebo obou /MP a /maxcpucount.
Doba realizace řešení závisí částečně na počet procesů, které provádějí sestavení.number Argument /maxcpucount možnost MSBuild určuje maximální počet projektů vytvořit současně.Podobně processMax argument /MP volba kompilátoru určuje maximální počet jednotek kompilace sestavení současně.Pokud /maxcpucount určuje možnost p projekty a /MP určuje možnost c procesy, maximálně pxc procesy spouštět současně.
Obecné zásady pro rozhodování, zda použít MSBuild nebo /MP technologie je takto:
Pokud mnoho projektů s několika soubory v jednotlivých projektů, MSBuild nástroj.
Pokud několik projektů s mnoha soubory v jednotlivých projektů, /MP možnost.
Pokud je počet projektů a souborů za projekt Rovnováha, použít obě MSBuild a /MP.Zpočátku nastavena /maxcpucount možnost počtu projektů k sestavení a /MP možnost počet procesorů v počítači.Měření výkonu a potom upravte nastavení k nejlepším výsledkům.Opakování tohoto cyklu, dokud nebudete spokojeni s sestavení celkový čas.
Volba kompilátoru /Gm
Výchozí projekt sestavit umožňuje /Gm (přírůstkové sestavení) volba kompilátoru pro sestavení ladění a zakáže pro verzi sestavení.Proto /MP volba kompilátoru automaticky v sestavení ladicí zakázána, protože je v konfliktu s výchozí /Gm volba kompilátoru.
Viz také
Referenční dokumentace
Referenční dokumentace pro použití nástroje MSBuild v příkazovém řádku