Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Profile-Guided Optimization (PGO) je technika optimalizace kompilátoru, která používá data profilace modulu runtime k vytvoření efektivnějšího nativního kódu. Při použití PGO kompilátor mění uspořádání kódu na základě toho, jak se aplikace skutečně spouští, což vede k lepšímu využití mezipaměti instrukcí, menší velikosti kódu a rychlejšímu spuštění.
Important
Desktopové Windows App SDK aplikace používají standardní pracovní postup MSVC PGO. Na rozdíl od aplikací pro UPW nevyžadují desktopové aplikace ruční kopírování pgort140.dll do balíčku aplikace – knihovna modulu runtime PGO je k dispozici prostřednictvím standardního modulu runtime C/C++.
Jak funguje PGO
PGO je třístupňový proces:
- Instrument – Sestavte aplikaci s povolenou instrumentací. Kompilátor vloží sondy, které zaznamenávají, jak se váš kód spouští.
-
Profil – Spusťte instrumentovanou aplikaci a vyzkoušejte nejdůležitější scénáře. Data profilace se ukládají do
.pgcsouborů. - Optimalizace – znovu sestavte aplikaci pomocí dat profilace. Kompilátor optimalizuje rozložení kódu, vkládání a větvení na základě skutečného chování modulu runtime.
Podrobný průvodce
1. Konfigurace pro vydání
Nastavte konfiguraci řešení na Release (nebo jinou konfiguraci, která vytváří optimalizovaný kód). PGO nemá při použití pro ladění sestavení žádnou výhodu.
2. Povolení optimalizace celého programu
Ve vlastnostech projektu přejděte na C/C++>Optimization a ověřte, že je povolená optimalizace celého programu (/GL).
3. Instrumentujte sestavení
Přejděte na Linker>Optimalizace a nastavte Generování kódu při linkování na Optimalizace řízená profilem – instrumentace (/LTCG:PGInstrument).
Sestavte řešení. Soubor .pgd se vygeneruje spolu s výstupem sestavení.
4. Spusťte aplikaci a shromážděte data profilu.
Spusťte aplikaci a vyzkoušejte scénáře, které chcete optimalizovat – spuštění, navigaci, zpracování dat nebo jakýkoli pracovní postup kritický pro výkon. Při spuštění aplikace použijte pgosweep.exe nástroj (zahrnutý v sadě nástrojů MSVC) ke shromažďování dat profilace:
pgosweep.exe MyApp.exe MyApp!Scenario1.pgc
Pro různé scénáře můžete shromáždit více .pgc souborů.
5. Sloučit data profilu (volitelné)
Ve výchozím nastavení se všechny .pgc soubory umístěné vedle .pgd souboru sloučí automaticky během kroku optimalizace. Pokud chcete určit váhu určitých scénářů jinak, použijte pgomgr.exe nástroj:
pgomgr.exe -merge:3 MyApp!CoreScenario.pgc MyApp.pgd
To dává CoreScenario spuštění trojnásobnou prioritu oproti ostatním spuštěním.
6. Optimalizace sestavení
Vraťte se na Linker>Optimalizace a nastavte možnost Generování kódu při linkování na Optimalizace řízená profilem – Optimalizovat (/LTCG:PGOptimize).
Znovu sestavte řešení. Linker automaticky sloučí všechny .pgc soubory a vytvoří optimalizovaný binární soubor na základě dat profilace.
Tipy pro efektivní PGO
- Analyzujte realistické scénáře. Kvalita optimalizace PGO závisí na tom, nakolik jsou vaše profilovací běhy reprezentativní. Otestujte ty části kódu, které vaši uživatelé skutečně používají.
- Zkombinujte více běhů. Shromážděte data profilace z několika různých scénářů použití, abyste pokryli širokou škálu cest kódu.
- Opětovné profilování, když se kód výrazně změní. Data profilu se stanou zastaralou, když provedete významné změny základu kódu. Pravidelně znovu instrumentovat a znovu profilovat.
- Změřte dopad. Porovnejte čas spuštění, propustnost a využití paměti před a po PGO a ověřte, že optimalizace stojí za to.
Související obsah
Windows developer