Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Profile-Guided Optimization (PGO) är en kompilatoroptimeringsteknik som använder körningsprofileringsdata för att skapa effektivare intern kod. När du använder PGO ordnar kompilatorn om koden baserat på hur appen faktiskt körs, vilket resulterar i bättre användning av instruktionscachen, mindre kodstorlek och snabbare körning.
Important
Desktop Windows App SDK-appar använder standardarbetsflödet för MSVC PGO. Till skillnad från UWP-appar behöver pgort140.dll inte kopieras manuellt till apppaketet för skrivbordsappar – PGO-runtimebiblioteket är tillgängligt via C/C++-standardruntimebiblioteket.
Så här fungerar PGO
PGO är en process i tre steg:
- Instrument – Skapa din app med instrumentation aktiverat. Kompilatorn infogar avsökningar som registrerar hur koden körs.
-
Profil – Kör den instrumenterade appen och träna dina viktigaste scenarier. Profileringsdata sparas i
.pgcfiler. - Optimera – Återskapa din app med hjälp av profileringsdata. Kompilatorn optimerar kodlayout, inliningen och grenar utifrån programmets faktiska beteende under körning.
Steg-för-steg-guide
1. Konfigurera för lansering
Ställ in lösningskonfigurationen på Release (eller en annan konfiguration som producerar optimerad kod). PGO har ingen fördel när det tillämpas på felsökningsversioner.
2. Aktivera optimering av hela programmet
I projektegenskaperna går du till C/C++>Optimization och kontrollerar att Hela programoptimeringen (/GL) är aktiverad.
3. Instrumentera bygget
Gå till Länkaren>Optimering och ställ in Länktidskodgenerering på Profilstyrd optimering - Instrumentering (/LTCG:PGInstrument).
Skapa din lösning. En .pgd fil genereras tillsammans med byggutdata.
4. Kör din app och samla in profildata
Kör appen och träna de scenarier som du vill optimera – start, navigering, databearbetning eller ett prestandakritiskt arbetsflöde. När appen körs använder du pgosweep.exe verktyget (ingår i MSVC-verktygsuppsättningen) för att samla in profileringsdata:
pgosweep.exe MyApp.exe MyApp!Scenario1.pgc
Du kan samla in flera .pgc filer för olika scenarier.
5. Koppla profildata (valfritt)
Som standard sammanfogas alla .pgc filer som placeras tillsammans med .pgd filen automatiskt under optimeringssteget. Om du vill vikta vissa scenarier på olika sätt använder du pgomgr.exe verktyget:
pgomgr.exe -merge:3 MyApp!CoreScenario.pgc MyApp.pgd
Detta ger körningen CoreScenario tre gånger så hög prioritet som andra körningar.
6. Optimera bygget
Gå tillbaka till Linker-optimering> och ange Länktidskodgenerering till Profilstyrd optimering – Optimera ()./LTCG:PGOptimize
Återskapa lösningen. Länkaren sammanfogar automatiskt alla .pgc filer och skapar en optimerad binär fil baserat på profileringsdata.
Tips för effektiv PGO
- Profilera realistiska scenarier. Kvaliteten på PGO-optimeringen beror på hur representativa dina profileringskörningar är. Testa de kodvägar som användarna faktiskt kommer att använda.
- Kombinera flera körningar. Samla in profileringsdata från flera olika användningsscenarier för att täcka ett brett spektrum av kodsökvägar.
- Omprofilera när koden ändras avsevärt. Profildata blir inaktuella när du gör större ändringar i din kodbas. Återinstrumentera och omprofilera med jämna mellanrum.
- Mät effekten. Jämför starttid, dataflöde och minnesanvändning före och efter PGO för att kontrollera att optimeringen är värdefull.
Relaterat innehåll
Windows developer