Pengoptimalan performa WinUI 3

Topik ini menjelaskan cara menggunakan alat pemantauan performa dari Windows Performance Toolkit untuk menghasilkan profil performa mendalam untuk aplikasi WinUI.

Bagaimana cara menggunakan Perekam Performa Windows untuk memantau aplikasi WinUI?

Windows Performance Recorder (WPR) dapat digunakan untuk membuat Event Tracing for Windows (ETW) rekaman perilaku sistem dan aplikasi dan penggunaan sumber daya berdasarkan profil bawaan. Rekaman ETW ini kemudian dapat diproses oleh Windows Performance Analyzer (WPA) untuk menghasilkan serangkaian grafik dan tabel untuk konsumsi yang lebih mudah dan analisis mendalam tentang penggunaan CPU, masalah daya, sistem atau performa aplikasi yang buruk, dan masalah performa lainnya.

Nota

Meskipun ada GUI dan versi baris perintah WPR, topik ini hanya mengacu pada versi GUI (lihat Pengenalan WPR untuk detail selengkapnya tentang kedua versi).

Profil WPR

Profil WPR digunakan untuk mengumpulkan informasi tentang berbagai aspek dan perilaku aplikasi Anda.

Dalam gambar berikut, jendela Perekam Performa Windows ditampilkan dengan profil "penggunaan CPU" (pemanfaatan CPU untuk setiap CPU pada sistem) dan profil "aktivitas XAML" (peristiwa dari penyedia terkait XAML, seperti WinUI) dipilih.

Tangkapan layar dari Windows Performance Recorder dengan penggunaan CPU dan profil aktivitas XAML yang dipilih.

Bagaimana cara menggunakan Penganalisis Kinerja Windows dengan aplikasi WinUI?

WinUI adalah API deklaratif dan mode yang dipertahankan di mana aplikasi menjelaskan pohon UIElements dan WinUI menjalankan tata letak dan merendernya. Ini dilakukan pada utas UI dalam batch yang disebut "bingkai", yang harus diselesaikan dengan cepat, idealnya dalam satu interval refresh tampilan. Ketika bingkai berjalan lama, tidak hanya menunda pembaruan agar tidak sampai ke layar, tetapi juga mencegah utas UI menangani input. Kecepatan frame yang lambat, meskipun bukan satu-satunya alasan untuk masalah responsivitas, adalah salah satu yang paling umum.

Pasang plugin "XAML Frame Analysis"

WinUI mencatat peristiwa ETW yang melacak mulai dan berhenti setiap frame (ditunjukkan pada cuplikan layar tabel "Kejadian Umum" WPA berikut). Namun, karena durasi setiap frame harus dihitung secara manual, sulit untuk menemukan peristiwa frame lambat.

Cuplikan layar Windows Penganalisis Kinerja memperlihatkan tabel Peristiwa Generik dengan serangkaian bingkai dimulai dan dihentikan.

Untuk mengatasi masalah ini, plugin tabel "Analisis Bingkai XAML" baru disertakan dengan Windows Assessment Toolkit (ADK) 10.1.26100.1 dan yang lebih baru. Tabel ini menghitung dan menampilkan durasi setiap frame (bersama dengan operasi lain yang juga memakan waktu).

Nota

Tabel "Analisis Bingkai XAML" memerlukan Windows Performance Analyzer (WPA) dari Windows ADK 10.1.26100.1 atau yang lebih baru. Versi WPR yang digunakan untuk mengambil trace tidak menjadi masalah.

Setelah ADK diinstal, tabel "Analisis Bingkai XAML" harus diaktifkan dengan mengedit file konfigurasi "perfcore.ini" di folder WPA (biasanya, C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit). Untuk melakukan ini, tutup setiap instans WPA yang terbuka, buka "perfcore.ini" di editor teks, tambahkan perf_xaml.dll ke daftar dll, dan simpan dan tutup file. Mulai ulang WPA, yang sekarang harus menampilkan grafik "Analisis Bingkai XAML" di bagian bawah bagian Aktivitas Sistem.

Cuplikan layar Windows Penganalisis Kinerja memperlihatkan tabel Analisis Bingkai XAML di bagian bawah bagian Aktivitas Sistem.

Gunakan plugin "Analisis Bingkai XAML"

Analisis Bingkai Xaml mendukung dua tampilan (kedua tampilan menunjukkan kolom yang sama):

  • "Bingkai Xaml yang Menarik" (default) - Menunjukkan bingkai WinUI berdasarkan heuristik yang mengidentifikasi yang paling mungkin menyebabkan masalah responsivitas. Ini sesuai dengan wilayah yang dimulai dengan operasi seperti inisialisasi WinUI, navigasi bingkai, atau tampilan flyout, dan berhenti dengan akhir bingkai berikutnya. Skenario ini biasanya melibatkan perubahan ekstensif pada pohon UIElement dan merupakan masalah performa yang paling rentan.
  • "Semua Info Xaml" - Menampilkan semua kerangka WinUI dari semua proses yang ditemukan dalam pelacakan. Untuk operasi seperti bingkai atau penyusunan tata letak, plugin secara otomatis menghitung dan menampilkan durasi berdasarkan event Mulai dan Berhenti.

Cuplikan layar berikut menyoroti cara beralih antara tampilan Analisis Bingkai Xaml.

Cuplikan layar Windows Penganalisis Kinerja memperlihatkan pemilih Tampilan untuk tabel Analisis Bingkai Xaml.

Kedua tampilan Analisis Bingkai Xaml menyertakan kolom berikut:

Title Nilai
Proses Nama proses dan ID
ID Thread ID Thread
Tipe Menjelaskan peristiwa yang sesuai dengan baris. Nilai yang mungkin termasuk:
  • WXM::InitializeForCurrentThread - Panggilan ke WindowsXamlManager.InitializeForCurrentThread. Menginisialisasi WinUI pada utas.
  • DWXS::Initialize - Panggilan ke DesktopWindowXamlSource.Initialize. Menginisialisasi pulau WinUI.
  • Bingkai - Bingkai pada thread UI. Menjalankan tata letak dan merender perubahan pada pohon sejak bingkai sebelumnya.
  • Buat perangkat grafis - Buat perangkat D3D dan D2D untuk WinUI. Terjadi pada utas latar belakang.
  • UpdateLayout - Proses tata letak pada utas UI. Terjadi sebagai bagian dari bingkai, tetapi juga dapat dipicu oleh aplikasi melalui UIElement.UpdateLayout.
  • Frame::Navigating - WinUI meningkatkan peristiwa Frame.Navigating .
  • Frame::Navigated - WinUI menaikkan peristiwa Frame.Navigated .
  • Fokus Hwnd - Hwnd aktif berubah.
  • Wilayah Yang Menarik - Wilayah yang dihitung oleh plugin untuk skenario menarik. Dimulai setelah peristiwa seperti inisialisasi WinUI, navigasi bingkai, dan menu pembukaan. Berhenti di akhir frame berikutnya.
AdalahMenarik Apakah baris tersebut dianggap menarik? Hanya baris-baris menarik yang muncul dalam tampilan Kerangka Xaml yang Menarik.
Durasi (md) Durasi dari baris tersebut. Dihitung dari peristiwa Mulai dan Hentikan.
Berat (ms) Durasi eksekusi CPU yang sebenarnya sesuai dengan durasi.
Mulai (s) Waktu mulai acara
Hentikan (s) Waktu berhenti acara

Kolom dapat diurutkan menurut Jenis atau Durasi untuk membantu mengidentifikasi potensi masalah seperti bingkai durasi termahal dan terpanjang dalam pelacakan (lihat gambar berikut). Anda juga dapat menelusuri paling detail baris tertentu untuk mengidentifikasi operasi yang mahal dan potensi pengoptimalan.

Tangkap Layar dari Windows Performance Analyzer menampilkan tabel Semua Info XAML, diurutkan menurut Durasi (ms).