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