Megosztás a következőn keresztül:


WinUI 3 teljesítményoptimalizálás

Ez a témakör a Windows Performance Toolkit teljesítményfigyelő eszközeinek használatát ismerteti a WinUI-alkalmazások részletes teljesítményprofiljainak létrehozásához.

Hogyan monitorozhatom a WinUI-alkalmazásokat a Windows teljesítményrögzítővel?

A Windows Teljesítményrögzítővel (WPR) részletes eseménykövetést hozhat létre a Windows (ETW) rendszer - és alkalmazásviselkedéséről, valamint az erőforrás-használatról a beépített profilok alapján. Ezeket az ETW-felvételeket ezután a Windows Performance Analyzer (WPA) feldolgozhatja, hogy grafikonokat és táblázatokat készítsen a processzorhasználat, az energiaproblémák, a gyenge rendszer- vagy alkalmazásteljesítmény és egyéb teljesítményproblémák egyszerűbb felhasználása és részletes elemzése érdekében.

Megjegyzés:

Bár a WPR grafikus felhasználói felülete és parancssori verziója is létezik, ez a témakör csak a grafikus felhasználói felület verziójára vonatkozik (a két verzióval kapcsolatos további részletekért lásd a WPR bemutatása című témakört).

WPR-profilok

A WPR-profilokkal információkat gyűjthet az alkalmazás különböző aspektusairól és viselkedéséről.

Az alábbi képen a Windows Teljesítményrögzítő ablak a "CPU-használat" profillal (a rendszer minden processzorának cpu-kihasználtsága) és az "XAML-tevékenység" profillal (XAML-hez kapcsolódó szolgáltatók eseményei, például WinUI) van kiválasztva.

A Windows Teljesítményrögzítő képernyőképe a kiválasztott processzorhasználattal és XAML-tevékenységprofilokkal.

Hogyan használhatom a Windows Teljesítményelemzőt WinUI-alkalmazásokkal?

A WinUI egy deklaratív, megtartott módú API, amelyben az alkalmazás leírja az UIElements egy fáját, és a WinUI az elrendezést futtatja és rendereli. Ez a felhasználói felületi szálon történik "keretek" nevű kötegekben, amelyeknek gyorsan be kell fejeződniük, ideális esetben a kijelző egy frissítési ciklusán belül. Ha a keretek hosszú ideig futnak, nem csak késlelteti a frissítések megjelenítését, hanem megakadályozza, hogy a felhasználói felület szála kezelje a bemenetet. A válaszképességi problémáknak az egyik leggyakoribb oka a lassú keretek, bár nem az egyetlen.

Telepítse az "XAML Frame Analysis" beépülő modult

A WinUI naplózza azokat az ETW-eseményeket, amelyek nyomon követik az egyes keretek kezdetét és leállítását (a WPA "Általános események" táblázatának alábbi képernyőképén látható). Mivel azonban az egyes keretek időtartamát manuálisan kell kiszámítani, nehéz azonosítani a lassú keret előfordulásait.

Képernyőkép a Windows Teljesítményelemzőről, amelyen az Általános események táblázat látható a keretek kezdő és befejező ciklusainak sorozatával.

A probléma megoldásához a Windows Assessment Toolkit (ADK) 10.1.26100.1 és újabb verziók új XAML-keretelemzési táblázat beépülő modulja is elérhető. Ez a táblázat kiszámítja és megjeleníti az egyes keretek időtartamát (más időigényes műveletekkel együtt).

Megjegyzés:

Az XAML-keretelemzés táblához Windows Performance Analyzer (WPA) szükséges Windows ADK 10.1.26100.1 vagy újabb verziójából. A nyomkövetéshez használt WPR-verzió nem számít.

Az ADK telepítése után az "XAML-keretelemzés" táblát engedélyezni kell a WPA mappában található "perfcore.ini" konfigurációs fájl szerkesztésével (általában C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit). Ehhez zárja be a WPA bármely megnyitott példányát, nyissa meg a "perfcore.ini" fájlt egy szövegszerkesztőben, adja hozzá perf_xaml.dll a dll-ek listájához, és mentse és zárja be a fájlt. Indítsa újra a WPA-t, amelynek a "XAML-keretelemzés" gráfjának most meg kell jelennie a Rendszertevékenység szakasz alján.

Képernyőkép a Windows Teljesítményelemzőről, amelyen a Rendszertevékenység szakasz alján található XAML-keretelemzési táblázat látható.

Használja a "XAML keretelemzés" beépülő modult

A Xaml-keretelemzés két nézetet támogat (mindkét nézet ugyanazokat az oszlopokat jeleníti meg):

  • "Érdekes Xaml-keretek" (alapértelmezett) – WinUI-kereteket jelenít meg heurisztika alapján, amelyek azonosítják azokat, amelyek valószínűleg válaszképességi problémákat okoznak. Ezek olyan régióknak felelnek meg, amelyek olyan műveletekkel kezdődnek, mint például a WinUI inicializálása, a keretnavigáció vagy a úszó panel megjelenítése, és a következő keret végére állnak le. Ezek a forgatókönyvek általában az UIElement fa jelentős módosításait foglalják magukban, és a leginkább érzékenyek a teljesítményproblémákra.
  • "Minden Xaml-információ" – Megjeleníti az összes WinUI-keretet a nyomkövetésben található összes folyamatból. Az olyan műveleteknél, mint a keret vagy az elrendezési passz, a beépülő modul automatikusan kiszámítja és megjeleníti az időtartamokat a Start és a Stop események alapján.

Az alábbi képernyőkép bemutatja, hogyan válthat a Xaml-keretelemzési nézetek között.

Képernyőkép a Windows Teljesítményelemzőről, amelyen a Xaml Frame Analysis tábla nézetválasztói láthatók.

Mindkét Xaml-keretelemzési nézet a következő oszlopokat tartalmazza:

Cím Érték
Folyamat Folyamat neve és azonosítója
Szálazonosító Szálazonosító
Típus A sornak megfelelő eseményt ismerteti. A lehetséges értékek a következők:
  • WXM::InitializeForCurrentThread – A WindowsXamlManager.InitializeForCurrentThread hívása. Inicializálja a WinUI-t a szálon.
  • DWXS::Initialize – A DesktopWindowXamlSource.Initialize hívása. Inicializál egy WinUI-szigetet.
  • Keret – Keret a felhasználói felület szálán. Elvégzi az elrendezést, és megjeleníti a fa változásait az előző képkocka óta.
  • Grafikus eszköz létrehozása – D3D és D2D-eszköz létrehozása WinUI-hoz. Háttérszálon megtörténik.
  • UpdateLayout – A felhasználói felület szálának elrendezése. Ez egy keret részeként történik, de az alkalmazás a UIElement.UpdateLayout használatával is aktiválhatja.
  • Keret::Navigálás – A WinUI előhozza a Frame.Navigating eseményt .
  • Keret::Navigated – A WinUI kiváltja a Frame.Navigated eseményt.
  • Hwnd Focus – Az aktív hwnd megváltozott.
  • Érdekes régió – A beépülő modul által kiszámított régió érdekes forgatókönyvekhez. Olyan események után indul el, mint a WinUI inicializálása, a keret navigációja és a menük megnyitása. Megáll a következő keret végén.
Érdekes Hogy a sor érdekesnek tekinthető-e. Csak érdekes sorok jelennek meg az Érdekes Xaml-keretek nézetben.
Időtartam (ms) A sor időtartama. Az indítási és leállítási eseményekből számítva.
Súly (ms) Az időtartamnak megfelelő tényleges cpu-végrehajtási idő.
Kezdés (ek) A kezdési esemény időpontja
Leállítás (ek) A Stop esemény időpontja

Az oszlopok típus vagy időtartam szerint rendezhetők, így könnyebben azonosíthatók az olyan lehetséges problémák, mint például a nyomkövetés legdrágább, leghosszabb időtartamú keretei (lásd a következő képet). A költséges műveletek és a lehetséges optimalizálások azonosításához részletezhet bizonyos sorokat is.

Képernyőkép a Windows Teljesítményelemzőről, amelyen az Összes XAML-információ tábla látható, időtartam (ms) szerint rendezve.