Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A profilvezérelt optimalizálás (PGO) egy fordítóoptimalizálási technika, amely futásidejű profilozási adatokat használ hatékonyabb natív kód előállítására. A PGO használatakor a fordító az alkalmazás tényleges működése alapján átrendezi a kódot, ami jobb utasításgyorsítótár-kihasználtságot, kisebb kódméretet és gyorsabb végrehajtást eredményez.
Important
Az asztali Windows App SDK alkalmazások a szabványos MSVC PGO-munkafolyamatot használják. Az UWP-alkalmazásokkal ellentétben az asztali alkalmazásokhoz nincs szükség manuálisan az pgort140.dll alkalmazáscsomagba való másolásra – a PGO futtatókörnyezeti kódtára a standard C/C++ futtatókörnyezeten keresztül érhető el.
A PGO működése
A PGO egy háromlépéses folyamat:
- Instrumentálás – Az alkalmazást engedélyezett instrumentálással állíthatja össze. A fordító olyan mintavételeket szúr be, amelyek rögzítik a kód végrehajtását.
-
Profilozás — Futtassa a műszerezett alkalmazást, és futtassa végig a legfontosabb használati forgatókönyveket. A rendszer fájlba menti a
.pgcprofilkészítési adatokat. - Optimalizálás – Az alkalmazás újraépítése a profilkészítési adatok használatával. A fordító a tényleges futásidejű viselkedés alapján optimalizálja a kódelrendezést, a függvénybeágyazást és az elágazásokat.
Részletes útmutató
1. Konfigurálás kiadáshoz
Állítsa a megoldáskonfigurációt kiadásra (vagy egy másik, optimalizált kódot előállító konfigurációra). A PGO-nek nincs előnye, ha hibakeresési buildekre van alkalmazva.
2. Teljes programoptimalizálás engedélyezése
A projekttulajdonságokban lépjen a C/C++>Optimalizálás elemre, és ellenőrizze, hogy a teljes programoptimalizálás (/GL) engedélyezve van-e.
3. A build instrumentálása
Nyissa meg aLinker-optimalizálást>, és állítsa be a link időkódjának létrehozásátprofilalapú optimalizálás – eszköz (/LTCG:PGInstrument) értékre.
Állítsa össze a megoldást. A rendszer a build kimenete mellett létrehoz egy .pgd fájlt.
4. Az alkalmazás futtatása és profiladatok gyűjtése
Futtassa az alkalmazást, és gyakorolja az optimalizálni kívánt forgatókönyveket – indítást, navigációt, adatfeldolgozást vagy bármilyen teljesítménykritikus munkafolyamatot. Az alkalmazás futtatása közben használja az pgosweep.exe eszközt (az MSVC-eszközkészletben található) a profilkészítési adatok gyűjtéséhez:
pgosweep.exe MyApp.exe MyApp!Scenario1.pgc
A különböző forgatókönyvekhez több .pgc fájlt is gyűjthet.
5. Profiladatok egyesítése (nem kötelező)
Alapértelmezés szerint a .pgc fájl mellett elhelyezett összes .pgd fájl automatikusan egyesül az optimalizálási lépés során. Bizonyos forgatókönyvek eltérő súlyozásához használja az pgomgr.exe eszközt:
pgomgr.exe -merge:3 MyApp!CoreScenario.pgc MyApp.pgd
Ez a CoreScenario futtatásnak háromszoros prioritást ad a többi futtatáshoz képest.
6. A build optimalizálása
Térjen vissza aLinker-optimalizáláshoz>, és állítsa be a link időkódjának létrehozásátprofilalapú optimalizálás – optimalizálás (/LTCG:PGOptimize) értékre.
A megoldás újraépítése. A linker automatikusan egyesíti az összes .pgc fájlt, és optimalizált bináris fájlt hoz létre a profilkészítési adatok alapján.
Tippek a hatékony PGO-hoz
- Elemezzen életszerű forgatókönyveket. A PGO-optimalizálás minősége attól függ, hogy mennyire reprezentatívak a profilkészítési futtatások. Tesztelje azokat a kódelágazásokat, amelyekkel a felhasználói ténylegesen találkozni fognak.
- Több futtatás egyesítése. Profilkészítési adatok gyűjtése számos különböző használati forgatókönyvből a kódútvonalak széles körének lefedése érdekében.
- Profilozd újra, ha a kód jelentősen megváltozik. A profiladatok elavulttá válnak, amikor jelentős módosításokat hajt végre a kódbázison. Időszakonként végezze el újra a műszerezést és a profilozást.
- Mérje meg a hatást. Hasonlítsa össze az indítási időt, az átviteli sebességet és a memóriahasználatot a PGO előtt és után annak ellenőrzéséhez, hogy érdemes-e optimalizálni.
Kapcsolódó tartalom
Windows developer