/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.

/E, /EP

Zkopíruje výstup preprocesoru na standardní výstup (stdout).

/GM

Umožňuje přírůstkového sestavení.

/showIncludes

Zapíše seznam souborů zahrnout standardní chyba (stderr).

/Yc

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

Bb385193.collapse_all(cs-cz,VS.110).gifMěř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.

Bb385193.collapse_all(cs-cz,VS.110).gifEfektivní 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í.

Bb385193.collapse_all(cs-cz,VS.110).gifPoč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.

Bb385193.collapse_all(cs-cz,VS.110).gifZdrojové 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.

Bb385193.collapse_all(cs-cz,VS.110).gifPouž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.

Bb385193.collapse_all(cs-cz,VS.110).gifNastavení projektu Visual Studio

Bb385193.collapse_all(cs-cz,VS.110).gifNá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.

Bb385193.collapse_all(cs-cz,VS.110).gifVolba 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

#Import směrnice (C++)

Referenční dokumentace pro použití nástroje MSBuild v příkazovém řádku