Aracılığıyla paylaş


WinUI performans iyileştirmesi

Bu konuda, WinUI uygulamaları için ayrıntılı performans profilleri oluşturmak üzere Windows Performans Araç Seti'ndeki performans izleme araçlarının nasıl kullanılacağı açıklanmaktadır.

WinUI uygulamalarını izlemek için Windows Performans Kaydedicisi'ni nasıl kullanabilirim?

Windows Performans Kaydedicisi (WPR), yerleşik profiller temelinde sistem ve uygulama davranışı ve kaynak kullanımına ilişkin Windows (ETW) kayıtları için ayrıntılı Olay İzleme oluşturmak için kullanılabilir. Bu ETW kayıtları daha sonra Windows Performans Analizi (WPA) tarafından işlenerek daha kolay tüketim ve CPU kullanımı, güç sorunları, kötü sistem veya uygulama performansı ve diğer performans sorunlarının ayrıntılı analizi için bir dizi grafik ve tablo oluşturulabilir.

Uyarı

WPR'nin hem GUI hem de komut satırı sürümleri olsa da, bu konu yalnızca GUI sürümüne başvurur (her iki sürüm hakkında daha fazla bilgi için bkz . WPR'ye giriş ).

WPR profilleri

WPR profilleri, uygulamanızın çeşitli yönleri ve davranışları hakkında bilgi toplamak için kullanılır.

Aşağıdaki görüntüde, Windows Performans Kaydedicisi penceresi "CPU kullanımı" profili (sistemdeki her CPU için CPU kullanımı) ve "XAML etkinliği" profili (WinUI gibi XAML ile ilgili sağlayıcılardan gelen olaylar) seçili olarak gösterilir.

CPU kullanımı ve XAML etkinlik profillerinin seçili olduğu Windows Performans Kaydedicisi'nin ekran görüntüsü.

Windows Performans Çözümleyicisi'ni WinUI uygulamalarıyla nasıl kullanabilirim?

WinUI, uygulamanın bir UIElements ağacı tanımladığı ve WinUI'nin düzeni çalıştırıp işlediği bildirim temelli, tutulan mod bir API'dir. Bu, kullanıcı arabirimi iş parçacığında "çerçeveler" adı verilen toplu iş parçacıklarında gerçekleştirilir. Bu işlem, ideal olarak ekranın bir yenileme aralığı içinde hızlı bir şekilde tamamlanır. Çerçeveler uzun süre çalıştığında, güncellemelerin ekrana ulaşmasını yalnızca geciktirmekle kalmaz, aynı zamanda UI iş parçacığının girişi işlemesini de engeller. Yavaş çerçeveler, yanıt verme sorunlarının tek nedeni olmasa da, en yaygın nedenlerden biridir.

"XAML Çerçeve Analizi" eklentisini yükleme

WinUI, her karenin başlangıcını ve durmasını izleyen ETW olaylarını günlüğe kaydeder (WPA "Genel Olaylar" tablosunun aşağıdaki ekran görüntüsünde gösterilmiştir). Ancak, her çerçevenin süresinin el ile hesaplanması gerektiğinden, yavaş kare oluşumlarını belirlemek zordur.

Bir dizi çerçevenin başlatılıp durdurulduğunu gösteren Genel Olaylar tablosunu gösteren Windows Performans Çözümleyicisi'nin ekran görüntüsü.

Bu sorunu gidermek için Windows Değerlendirme Araç Seti (ADK) önizlemesi, derleme 26020 ve sonraki sürümlere yeni bir "XAML Çerçeve Analizi" tablo eklentisi eklenmiştir. Bu tablo, her çerçevenin süresini hesaplar ve gösterir (diğer zaman alan işlemlerle birlikte).

Uyarı

Yalnızca Windows Performans Çözümleyicisi'nin (WPA) önizleme sürümünde "XAML Çerçeve Analizi" tablosu olsa da, izlemeyi almak için kullanılan WPR sürümü önemli değildir.

ADK önizlemesi yüklendikten sonra, WPA klasöründeki "perfcore.ini" yapılandırma dosyası düzenlenerek "XAML Çerçeve Analizi" tablosunun etkinleştirilmesi gerekir (genellikle, C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit). Bunu yapmak için WPA'nın açık örneklerini kapatın, metin düzenleyicisinde "perfcore.ini" öğesini açın, dll listesine ekleyin perf_xaml.dll ve dosyayı kaydedip kapatın. WpA'yı yeniden başlatın. Bu, sistem etkinliği bölümünün en altında "XAML Çerçeve Analizi" grafiğini göstermelidir.

Sistem Etkinliği bölümünün alt kısmındaki XAML Çerçeve Analizi tablosunu gösteren Windows Performans Çözümleyicisi'nin ekran görüntüsü.

"XAML Çerçeve Analizi" eklentisini kullanma

Xaml Çerçeve Analizi iki görünümü destekler (her iki görünüm de aynı sütunları gösterir):

  • "İlginç Xaml Çerçeveleri" (varsayılan) - Yanıt verme sorunlarına neden olma olasılığı en yüksek olanları tanımlayan buluşsal yöntemlere dayalı WinUI çerçevelerini gösterir. Bunlar WinUI başlatma, çerçeve gezintisi veya açılır ekran gibi işlemlerle başlayan bölgelere karşılık gelir ve bir sonraki çerçevenin sonunda durur. Bu senaryolar genellikle UIElement ağacında kapsamlı değişiklikler içerir ve performans sorunlarına en duyarlı olanlardır.
  • "Tüm Xaml Bilgileri" - İzlemedeki tüm süreçlerden bulunan tüm WinUI çerçevelerini gösterir. Çerçeve veya düzen geçişi gibi işlemler için eklenti, başlangıç ve durdurma olaylarını temel alarak süreleri otomatik olarak hesaplar ve görüntüler.

Aşağıdaki ekran görüntüsünde Xaml Çerçeve Analizi görünümleri arasında geçiş yapma işlemleri vurgulanmaktadır.

Xaml Çerçeve Analizi tablosunun Görünüm seçicilerini gösteren Windows Performans Çözümleyicisi'nin ekran görüntüsü.

Her iki Xaml Çerçeve Analizi görünümü de aşağıdaki sütunları içerir:

Başlık Değer
İşlem İşlem adı ve kimliği
İş Parçacığı Kimliği İş Parçacığı Kimliği
Türü Satıra karşılık gelen olayı açıklar. Olası değerler şunlardır:
  • WXM::InitializeForCurrentThread - WindowsXamlManager.InitializeForCurrentThread çağrısı. İş parçacığında WinUI'yi başlatır.
  • DWXS::Initialize - DesktopWindowXamlSource.Initialize çağrısı. Bir WinUI adası başlatır.
  • Çerçeve - Kullanıcı arabirimi iş parçacığındaki bir çerçeve. Düzeni çalıştırır ve önceki çerçeveden bu yana ağaçta yapılan değişiklikleri işler.
  • Grafik cihazı oluşturma - WinUI için D3D ve D2D cihazı oluşturun. Arka planda gerçekleşir.
  • UpdateLayout - Kullanıcı arabirimi iş parçacığında bir düzenleme geçişi. Bir çerçevenin parçası olarak gerçekleşir, ancak uiElement.UpdateLayout aracılığıyla uygulama tarafından da tetiklenebilir.
  • Frame::Navigating - WinUI , Frame.Navigating olayını başlatır.
  • Frame::Navigated - WinUI , Frame.Navigated olayını yükseltir .
  • Hwnd Odağı - Aktif hwnd değişti.
  • İlgi Alanı Bölgesi - eklenti tarafından ilginç senaryolar için hesaplanan bölge. WinUI başlatma, çerçeve gezintisi ve menüleri açma gibi olaylardan sonra başlar. Sonraki çerçevenin sonunda durur.
İlginçtir Satırın ilgi çekici kabul edilip edilmediği. İlginç Xaml Çerçeveleri görünümünde yalnızca ilginç satırlar gösterilir.
Süre (ms) Sıranın süresi. Başlangıç ve Durdurma olaylarından hesaplanır.
Ağırlık (ms) Süreye karşılık gelen gerçek CPU yürütme süresi.
Başlangıç (lar) Başlangıç olayının zamanı
Durdur (lar) Durdurma olayının zamanı

Sütunlar, izleme içindeki en pahalı veya en uzun süreli çerçeveler gibi olası sorunları tespit etmeye yardımcı olmak için Tür ya da Süre seçeneklerine göre sıralanabilir (aşağıdaki resme bakın). Ayrıca pahalı işlemleri ve olası iyileştirmeleri belirlemek için belirli satırlarda detaya gidebilirsiniz.

Süreye (ms) göre sıralanmış Tüm XAML Bilgileri tablosunu gösteren Windows Performans Çözümleyicisi'nin ekran görüntüsü.