Performans Profili Oluşturucu'da CPU profili oluşturmayı kullanarak performansı analiz etme (C#, Visual Basic, C++, F#)

Uygulamanızdaki performans sorunlarını araştırmaya başlamanın iyi bir yolu, CPU profil oluşturucu kullanarak CPU kullanımını anlamaktır. Visual Studio'nun CPU Kullanımı performans aracı, C++, C#/Visual Basic'te kod yürütülürken harcanan CPU etkin hesaplama süresini ve harcanan yüzdeyi gösterir.

CPU Kullanımı aracı size yardımcı olabilir:

  • Ekibinizin kod tabanında yavaş bir yavaşlık veya işlemin yanıt vermiyor olduğunu tanılama. Araç, ekibinizin üretim koduyla ilgili sorunu tanılamanıza yardımcı olabilir. Performans sorunlarını analiz edip tanılayabilmek için otomatik içgörüler ve verilerinizin çeşitli görünümlerini sağlar.

  • DevOps senaryolarındaki performans sorunlarını belirleme Örneğin, araç bir müşterinin yoğun sezonda bazı isteklerin veya siparişlerin perakende web sitesine geçmediğini bildirmesine yardımcı olabilir. Sorunlar genellikle üretim aşamasındadır ve o anda hata ayıklamak zordur, ancak bu araç sorunla ilgili yeterli bilgi ve kanıt yakalamanıza yardımcı olabilir. Bir izleme dosyası topladıktan sonra analiz, olası nedenleri anlamanıza ve kodunuzun bağlamında önerilerde bulunarak sorunu çözmek için sonraki adımları izlemenize yardımcı olabilir.

  • Yüksek CPU kullanımını denetleme Gecikme sorununuz bir API isteği içinde değilse, CPU Kullanımı aracıyla ilgili yüksek CPU kullanımı ve diğer ilgili sorunları de kontrol edebilirsiniz. CPU Kullanımı aracı, performans sorunlarını belirlemenize yardımcı olabilir, böylece iyileştireceğiniz yeri daraltabilirsiniz.

CPU Kullanımı aracı hem yerel izleme oturumları hem de üretim için yararlıdır. ALT+F2 klavye kısayolunu ve ardından CPU Kullanımı'nı seçerek veya dotnet-trace veya dotnet-monitor gibi bir araç kullanarak zaten toplanmış bir izleme açarak CPU Kullanımı aracını çalıştırabilirsiniz. (.NET üretim kodu için büyük olasılıkla izlemeleri bu şekilde toplayabilirsiniz.)

CPU Kullanımı aracını açık bir Visual Studio projesinde, yüklü bir Microsoft Store uygulamasında veya çalışan bir uygulama veya işleme iliştirilmiş olarak çalıştırabilirsiniz. CPU Kullanımı aracını hata ayıklama ile veya hata ayıklama olmadan çalıştırabilirsiniz. Daha fazla bilgi için bkz . Hata ayıklayıcı ile veya hata ayıklayıcı olmadan profil oluşturma araçlarını çalıştırma.

Aşağıdaki yönergelerde, Visual Studio Performans Profil Oluşturucu'yu kullanarak hata ayıklayıcı olmadan CPU Kullanımı aracının nasıl kullanılacağı gösterilmektedir. Örneklerde yerel makinede Yayın derlemesi kullanılır. Sürüm derlemeleri gerçek uygulama performansının en iyi görünümünü sağlar. CPU Kullanımı aracını kullanarak performansı geliştirmeyi gösteren bir öğretici için bkz . Örnek olay incelemesi: Kodu iyileştirmeye yönelik başlangıç kılavuzu.

Genellikle, yerel makine yüklü uygulama yürütmeyi en iyi şekilde çoğaltır. Uzak bir cihazdan veri toplamak için uygulamayı Uzak Masaüstü Bağlantısı üzerinden değil doğrudan cihazda çalıştırın.

CPU kullanım verilerini toplama

  1. Visual Studio projesinde çözüm yapılandırmasını Yayın olarak ayarlayın ve dağıtım hedefi olarak Yerel Windows Hata Ayıklayıcısı'nı (veya Yerel Makine) seçin.

    Sürümü ve Yerel Makineyi Seç'i gösteren ekran görüntüsü.

    Sürümü ve Yerel Makineyi Seç'i gösteren ekran görüntüsü.

  2. Performans Profili Oluşturucu hatalarını ayıkla'ya> tıklayın.

  3. Kullanılabilir araçlar'ın altında CPU Kullanımı'nı ve ardından Başlat'ı seçin.

    CPU Kullanımını Seç'i gösteren ekran görüntüsü.

    CPU Kullanımını Seç'i gösteren ekran görüntüsü.

    Profil oluşturucuyu başlatmadan önce Koleksiyonla başlat duraklatıldı seçeneğini etkinleştirirseniz, tanılama oturumu görünümünde Kayıt düğmesini seçene kadar veriler toplanmaz.

    Not

    Aracı daha verimli hale getirme hakkında daha fazla bilgi için bkz . Profil Oluşturucu ayarlarını iyileştirme.

  4. Uygulama başlatıldıktan sonra tanılama oturumu başlar ve CPU kullanım verilerini görüntüler. Veri toplamayı bitirdiğinizde Koleksiyonu Durdur'u seçin.

    CPU Kullanımını Durdur veri toplamayı gösteren ekran görüntüsü.

    CPU Kullanımını Durdur veri toplamayı gösteren ekran görüntüsü.

    CPU Kullanımı aracı verileri analiz eder ve raporu görüntüler. Veri toplama veya görüntüleme konusunda sorun yaşıyorsanız bkz . Profil oluşturma hatalarını giderme ve sorunları giderme.

    CPU Kullanımı raporunu gösteren ekran görüntüsü.

    CPU Kullanımı raporunu gösteren ekran görüntüsü.

    Görüntülenecek iş parçacıklarını seçmek veya seçimini kaldırmak için Filtre açılan listesini kullanın ve belirli bir iş parçacığını veya düğümü aramak için Arama kutusunu kullanın.

CPU kullanımı veri sütunları

Veri Akışı Adı Açıklama
Toplam CPU [birim, %] Toplam veri yüzdesi denklemi

Cpu hesaplama süresinin milisaniyesi ve işlev çağrıları tarafından kullanılan CPU yüzdesi ve seçilen zaman aralığında işlev tarafından çağrılan işlevler. Bu, bir zaman aralığındaki toplam CPU etkinliğini kullanılabilir toplam CPU ile karşılaştıran CPU Kullanımı zaman çizelgesi grafiğinden farklıdır.
Self CPU [birim, %] Kendi kendine % denklemi

CPU hesaplama süresinin milisaniyesi ve işlev tarafından çağrılan işlevler hariç olmak üzere seçilen zaman aralığında işleve yapılan çağrılar tarafından kullanılan CPU yüzdesi.
Modül Bazı görünümlerde, işlevi içeren modülün adını gösteren Modül sütunu gösterilir.

CPU içgörülerini analiz etme

En İyi İçgörüler bölümünde herhangi bir içgörü görünürse, belirtilen sorun hakkında daha fazla bilgi edinmek için sağlanan bağlantıyı kullanın. Ayrıca, Copilot kullanıyorsanız Copilot'a Sor düğmesi Copilot sohbet penceresini açar ve Copilot kodunuz ve tanımlanan sorunlar temelinde öneriler sağlar.

Daha fazla bilgi için bkz . CPU içgörüleri.

CPU kullanımını analiz etme

CPU Kullanımı raporunu analiz etmek için Ayrıntıları aç'a tıklayın veya üst işlevlerden birine tıklayarak İşlevler görünümünü açın.

Rapor, tanılama verilerinin farklı görünümlerini sağlar:

  • Arayan/arayan
  • Çağrı ağacı
  • Modül
  • İşlevler
  • Alev grafiği

Raporu analiz etmek için Ayrıntılı rapor oluştur'a tıklayın.

Rapor, tanılama verilerinin farklı görünümlerini sağlar:

  • Arayan/arayan
  • Çağrı ağacı

Arayan/aranan dışındaki tüm görünümlerde, tanılama raporu En yüksekten en düşüğe kadar Toplam CPU'ya göre sıralanır. Sütun başlıklarını seçerek sıralama düzenini veya sıralama sütununu değiştirin. İlgilendiğiniz bir işleve çift tıklayabilirsiniz ve işlevin kaynağını ve bu işlevde zamanın nereye harcandığını gösteren vurguyu görürsünüz. Tabloda işlevler (Toplam CPU) olarak adlandırılanlar dahil olmak üzere işlevde harcanan süre gibi verileri içeren sütunlar ve işlevler (Self CPU) hariç bir işlevde harcanan zamanı gösteren ikinci bir sütun gösterilir.

Bu veriler, işlevin kendisinin performans sorunu olup olmadığını değerlendirmenize yardımcı olabilir. Uç noktalarınızın yavaş olmasının veya kaynak tüketiminin ağır olmasının nedeninin üçüncü taraf kod veya çalışma zamanı kitaplıkları olup olmadığını görmek için yöntemin ne kadar veri görüntülediğini belirleyin.

Alev grafiğini kullanma hakkında daha fazla bilgi için bkz . Alev Grafı ile sık erişimli yolları belirleme.

CPU Kullanımı çağrı ağacı

Çağrı ağacını görüntülemek için rapordaki üst düğümü seçin. Varsayılan olarak, CPU Kullanımı sayfası Çağıran/Çağıran görünümüne açılır. Geçerli Görünüm açılan listesinde Çağrı Ağacı'nı seçin.

Arama ağacı görünümünde CPU'nun en yüksek yüzdesini kullanan işlev çağrılarını görmek için Sık Erişimli Yolu Genişlet ve Sık Erişimli Yolu Göster düğmelerine tıklayabilirsiniz.

Çağrı ağacı yapısı

Çağrı ağacı yapısını gösteren ekran görüntüsü.

Çağrı ağacı yapısını gösteren ekran görüntüsü.

Görsel Açıklama
1. Adım UYGULAMAYı temsil eden CPU Kullanımı çağrı ağacındaki en üst düzey düğüm.
2. Adım Çoğu uygulamada Dış Kodu Göster seçeneği devre dışı bırakıldığında ikinci düzey düğüm bir [Dış Kod] düğümüdür. Düğüm, uygulamayı başlatan ve durduran sistem ve çerçeve kodunu içerir, kullanıcı arabirimini çizer, iş parçacığı zamanlamasını denetler ve uygulamaya diğer düşük düzeyli hizmetler sağlar.
3. Adım İkinci düzey düğümün alt öğeleri, ikinci düzey sistem ve çerçeve kodu tarafından çağrılan veya oluşturulan kullanıcı kodu yöntemleri ve zaman uyumsuz yordamlardır.
Adım 4 Bir yöntemin alt düğümleri yalnızca üst yöntemin çağrıları için verilere sahiptir. Dış Kodu Göster devre dışı bırakıldığında, uygulama yöntemleri bir [Dış Kod] düğümü de içerebilir.

Harici kod

Kodunuz tarafından yürütülen sistem ve çerçeve işlevlerine dış kod adı verilir. Dış kod işlevleri uygulamayı başlatır ve durdurur, kullanıcı arabirimini çizer, iş parçacığını denetler ve uygulamaya diğer alt düzey hizmetleri sağlar. Çoğu durumda dış kodla ilgilenmezsiniz, bu nedenle CPU Kullanımı çağrı ağacı bir kullanıcı yönteminin dış işlevlerini tek bir [Dış Çağrı] düğümünde toplar.

Dış kodun arama yollarını görüntülemek için, ana rapor özet sayfasında (sağ bölme) Ayarlar açılan menüsünden Yalnızca Kodumu Göster'in seçimini kaldırın ve uygula'yı seçin. (Ayarlar açılan menüsü, ayrıntılı görünümlerde değil ana rapor özeti sayfasında bulunur.)

Ayarlar'ı ve ardından Yalnızca Kodumu Göster'i gösteren ekran görüntüsü.

Kodunuz tarafından yürütülen sistem ve çerçeve işlevlerine dış kod adı verilir. Dış kod işlevleri uygulamayı başlatır ve durdurur, kullanıcı arabirimini çizer, iş parçacığını denetler ve uygulamaya diğer alt düzey hizmetleri sağlar. Çoğu durumda dış kodla ilgilenmezsiniz, bu nedenle CPU Kullanımı çağrı ağacı bir kullanıcı yönteminin dış işlevlerini bir [Dış Kod] düğümünde toplar.

Dış kodun çağrı yollarını görüntülemek için, ana tanılama raporu sayfasında (sağ bölme) Filtre açılan listesinden Dış Kodu Göster'i ve ardından Uygula'yı seçin. ARDıNDAN CPU Kullanımı sayfasının Çağrı Ağacı görünümü dış kod çağrılarını genişletir. (Filtre açılan listesi, ayrıntılı görünümlerde değil ana tanılama sayfasında kullanılabilir.)

Dış Kodu Göster'i gösteren ekran görüntüsü.

Yalnızca Kodumu Göster'i devre dışı bırakdığınızda, CPU Kullanımı sayfasının Çağrı Ağacı görünümü dış kod çağrılarını genişletir.

Birçok dış kod çağrı zinciri iç içe yerleştirilmiş olduğundan, zincirin genişliği İşlev Adı sütununun görüntüleme genişliğini aşabilir. ardından işlev adları aşağıdaki görüntüde gösterildiği gibi görünür.

Çağrı ağacında iç içe dış kodu gösteren ekran görüntüsü.

Birçok dış kod çağrı zinciri iç içe yerleştirilmiş olduğundan, zincirin genişliği İşlev Adı sütununun görüntüleme genişliğini aşabilir. İşlev adları daha sonra .... olarak görünür.

Çağrı ağacında iç içe dış kodu gösteren ekran görüntüsü.

Aradığınız işlev adını bulmak için arama kutusunu kullanın. Seçili satırın üzerine gelin veya verileri görüntülemek için yatay kaydırma çubuğunu kullanın.

İç içe dış kodu ara'yı gösteren ekran görüntüsü.

İç içe dış kodu ara'yı gösteren ekran görüntüsü.

CPU kullanım çağrısı ağacında zaman uyumsuz işlevler

Derleyici zaman uyumsuz bir yöntemle karşılaştığında, yöntemin yürütülmesini denetlemek için gizli bir sınıf oluşturur. Kavramsal olarak, sınıf bir durum makinesidir. sınıfı, özgün yöntemleri zaman uyumsuz olarak çağıran derleyici tarafından oluşturulan işlevlere ve bunları çalıştırmak için gereken geri çağırmalara, zamanlayıcılara ve yineleyicilere sahiptir. Bir üst yöntem özgün yöntemi çağırdığında, derleyici yöntemini üst öğesinin yürütme bağlamından kaldırır ve gizli sınıf yöntemlerini uygulama yürütmeyi denetleen sistem ve çerçeve kodu bağlamında çalıştırır. Zaman uyumsuz yöntemler genellikle bir veya daha fazla farklı iş parçacığında yürütülür ancak her zaman yürütülür. Bu kod, CPU Kullanımı çağrı ağacında ağacın üst düğümünün hemen altında [Dış Kod] düğümünün alt öğeleri olarak görünür.

Aşağıdaki örnekte, [Dış Kod] altındaki ilk iki düğüm, durum makine sınıfının derleyici tarafından oluşturulan yöntemleridir. Üçüncü düğüm, özgün yöntemine yapılan çağrıdır.

Zaman uyumsuz düğümü gösteren ekran görüntüsü.

Neler olduğunu göstermek için oluşturulan yöntemleri genişletin:

Genişletilmiş zaman uyumsuz düğümü gösteren ekran görüntüsü.

Genişletilmiş zaman uyumsuz düğümü gösteren ekran görüntüsü.

  • MainPage::GetMaxNumberAsyncButton_Click yalnızca görev değerlerinin listesini yönetir, sonuçların üst sınırını hesaplar ve çıkışı görüntüler.

  • MainPage+<GetMaxNumberAsyncButton_Click>d__3::MoveNext çağrısına sarmalayan 48 görevi zamanlamak ve başlatmak için GetNumberAsyncgereken etkinliği gösterir.

  • MainPage::<GetNumberAsync>b__b çağıran GetNumbergörevlerin etkinliğini gösterir.

Arama sayılarını toplama (.NET)

çağrı sayılarını İşlevler görünümünde görüntülemek istiyorsanız, profil oluşturucuyu başlatmadan önce ayarı etkinleştirebilirsiniz. Bu ayar .NET proje türleri için desteklenir ve işlemin profil oluşturucu altında başlatılmasını gerektirir. Ekleme senaryosu desteklenmez.

  1. Performans Profili Oluşturucu'da CPU Kullanımı için Ayarlar simgesini seçin.

    CPU Kullanımı için ayarlar simgesini gösteren ekran görüntüsü.

  2. Arama sayılarını topla (yalnızca.NET) seçeneğini etkinleştirin.

    CPU Kullanımı ayarlarını gösteren ekran görüntüsü.

  3. CPU kullanım verilerini toplayın.

  4. İşlevler görünümünü açın ve Çağrı sayısı sütununun görünür olarak ayarlandığından emin olun.

    Sütunu görmüyorsanız, görünür sütunları seçmek için bir sütun başlığına sağ tıklayın.

    Arama sayısı verilerini gösteren ekran görüntüsü.