Sdílet prostřednictvím


Optimalizace s asistencí profilu

Optimalizace umožňuje optimalizovat výstupní soubor, kde Optimalizátor používá data ze zkušební jízdy souboru .exe nebo .dll.Data představují, jak je program pravděpodobně provádět v provozním prostředí.

Profilově řízené optimalizace jsou dostupné pouze pro nativní cíle: x 86, Itanium procesoru rodina (IPF) nebo x64.Profilově řízené optimalizace nejsou k dispozici pro výstupní soubory, které se spustí v společného jazykového modulu runtime.I v případě, že vytvoření sestavení s smíšené nativní a spravované kódem (kompilace s /clr), optimalizace nelze použít na nativní kód.Profil s asistencí optimalizace nejsou podporovány také pro úložiště systému Windows aplikace.Při pokusu o vytvoření projektu pomocí těchto možností nastavených v integrovaném vývojovém prostředí bude způsobit chybu sestavení.

[!POZNÁMKA]

Informace získané z profilování zkušební jízdy, bude mít přednost před optimalizací, které by jinak byly v platnosti, pokud zadáte /Ob, /Os, nebo /Ot.Další informace naleznete v tématu /Ob (vložené funkce rozšíření) a / Os, /Ot (kód malé něco pro tuhle, něco pro tuhle rychlé kód).

Následuje přehled procesu pomocí profilově řízené optimalizace:

  • Kompilaci jednoho nebo více souborů zdrojového kódu s /GL.

    Každý modul je integrována s /GL může být prověřeno během zkušební jízdy optimalizace pro zachycení chování run-time.Každý modul v sestavení optimalizace nemusí být kompilovány s /GL.Však pouze ty moduly, které jsou zkompilovány s /GL bude instrumentovaného a dále k dispozici pro profilově řízené optimalizace.

  • Propojení s /LTCG:PGINSTRUMENT.

    /LTCG:PGINSTRUMENT vytvoří soubor prázdný .pgd.Po provedení zkoušky data budou přidána do souboru .pgd, lze použít jako vstup k dalšímu kroku odkaz (Vytvoření optimalizované bitové kopie).Při zadávání /LTCG:PGINSTRUMENT, můžete volitelně zadat /PGD s nestandardní název nebo umístění souboru .pgd.

  • Profil aplikace.

    Pokaždé, když ukončí relaci PROFILOVANÉHO EXE nebo PROFILOVANÉHO knihovny DLL je načtena appname! je vytvořen soubor #.pgc.Soubor .pgc obsahuje informace o konkrétní aplikaci spustit test.# je číslo, počínaje číslem 1, který je zvýšen na základě počtu jiných appname! #.pgc soubory v adresáři.Soubor .pgc můžete odstranit, pokud se zkušební nepředstavuje scénáře, který chcete optimalizovat.

    Během spustit test, můžete vynutit uzavření otevřených .pgc souboru a vytvoření nového souboru .pgc se pgosweep nástroj (například při ukončení scénář testování se nekryje s ukončení aplikace).

    Můžete použít PogoSafeMode možnost, pokud profil aplikace.Tato možnost umožňuje určit, zda má být profil aplikace v nouzovém režimu nebo rychlého režimu.Další informace o těchto režimů naleznete v tématu PogoSafeMode.

  • Propojení s /LTCG:PGOPTIMIZE.

    /LTCG:PGOPTIMIZE vytvoří optimalizovanou bitovou kopii.V tomto kroku převedeni jako vstupní soubor .pgd.Další informace naleznete v tématu /LTCG:PGOPTIMIZE.

Je dokonce možné vytvořit optimalizovanou výstupního souboru a později zjistíte, že další profilování bude užitečné, chcete-li vytvořit více optimalizovanou bitovou kopii.Získávaná obrazu a jeho .pgd soubor k dispozici, můžete provést další zkušební jízdy a znovu vytvořit optimalizovanou bitovou kopii s novější soubor .pgd.

Následuje seznam profilově řízené optimalizace:

  • Vkládání – například, pokud existuje funkce A že často volání funkce B a funkce B je relativně malý, pak profilově řízené optimalizace budou vložené funkce B ve funkci A.

  • Virtuální volání spekulacím – je-li virtuální volání nebo jiné volání prostřednictvím ukazatele na funkci, často zaměřuje na některé funkce, optimalizace můžete vložit podmíněně provést přímé volání funkce často zaměřeny a přímé volání může být vložená.

  • Přidělení registru pro – optimalizace dat profilu za následek lepší přidělení registru pro.

  • Základní blok optimalizace – základní blok optimalizace umožňuje běžně provedené základní bloky, které uvedeno spouštěny v rámci daném snímku mají být umístěny do stejné sady stránky (lokality).Tímto způsobem je minimalizován počet stránek použít, čímž dojde k minimalizaci režie paměti.

  • Optimalizace velikosti/rychlost – funkce, kde program stráví spoustu času, můžete optimalizovat pro rychlost.

  • Funkce rozložení – na základě volání grafu a chování PROFILOVANÉHO volající/volaný, funkce, které jsou obvykle stejné dráze spuštění jsou umístěny ve stejném oddílu.

  • Podmíněné optimalizace pobočky – s hodnotou sond profilově řízené optimalizace najdete, pokud dané hodnoty v příkazu switch se používá častěji než jiné hodnoty.Tato hodnota je pak být vyžádány z příkazu switch.Totéž lze provést pomocí if/else pokyny kde můžete objednat optimalizaci if/else tak, aby buď if nebo jiný blok je umístěn nejprve podle toho, který blok je více často PRAVDA.

  • Mrtvý kód oddělení – kód, který není volána při vytváření profilů jsou přesunuty do speciální oddíl, který je připojen na konec sady oddílů.To účinně udržuje v této části ze stránky často používá.

  • Oddělení kódu EH – The EH, výjimečně právě prováděný kód lze často přesunuta do samostatného oddílu profilově řízené optimalizace můžete určit, že výjimky vyskytnout pouze za výjimečných podmínek.

  • Vnitřní paměti – rozšíření vnitřní můžete lépe rozhodnout, pokud může být určen, pokud vnitřní nazývá často.Vnitřnímu lze také optimalizovat podle velikosti bloku přesune nebo zkopíruje.

Další informace naleznete v tématu Walkthrough: Using Profile-Guided Optimizations.

V tomto oddíle

Nástroje pro optimalizaci s asistencí profilu

Jak: více profilů PGO sloučit do jednoho profilu

Viz také

Referenční dokumentace

Nástroje pro vytváření C/C++