Instrumen aplikasi .NET Anda di Visual Studio (C#, C++, Visual Basic, F#)

Dengan rilis Visual Studio 2022 versi 17.5, Anda dapat menggunakan alat Instrumentasi dinamis baru. Alat ini menunjukkan berapa kali fungsi Anda dipanggil dan lebih cepat daripada versi alat Instrumentasi sebelumnya. Alat ini mendukung instrumentasi .NET Core tanpa memerlukan PDB. Mulai Visual Studio 2022 versi 17.6 Pratinjau 2, alat ini juga mendukung C/C++.

Alat ini mirip dengan alat Penggunaan CPU kecuali didasarkan pada waktu jam dinding alih-alih pemanfaatan CPU. Ini berarti waktu yang diblokir seperti waktu yang dihabiskan untuk menunggu kunci akan muncul di jejak instrumentasi, tidak seperti alat Penggunaan CPU. Untuk informasi tambahan tentang belajar menggunakan alat Instrumentasi secara efektif, lihat Ringkasan Instrumentasi dan studi kasus : Mengisolasi masalah performa.

Instrumentasikan aplikasi Anda

  1. Di proyek Visual Studio, atur konfigurasi solusi ke Rilis dan pilih target penyebaran.

    Target penyebaran biasanya cocok dengan nama proyek, yang menunjukkan penyebaran lokal.

  2. Pilih Alt+F2 (atau Debug > Performance Profiler) untuk membuka profiler performa di Visual Studio.

  3. Pilih kotak centang Instrumentasi.

    Cuplikan layar menunjukkan alat Instrumentasi yang dipilih.

    Jika Anda mengaktifkan opsi Mulai dengan pengumpulan dijeda sebelum memulai profiler, data tidak akan dikumpulkan hingga Anda memilih tombol Rekam di tampilan sesi diagnostik.

    Nota

    Jika alat tidak tersedia untuk pemilihan, kosongkan kotak centang setiap alat lain karena beberapa alat perlu berjalan sendiri. Untuk mempelajari selengkapnya tentang menjalankan alat bersama-sama, lihat Menggunakan beberapa alat profiler secara bersamaan.

    Jika alat masih belum tersedia, periksa apakah proyek Anda memenuhi persyaratan sebelumnya. Pastikan proyek Anda berada dalam mode Rilis untuk mengambil data yang paling akurat.

    Untuk beberapa jenis proyek, seperti CMake, Anda harus mengatur target startup ke Executable. Untuk informasi selengkapnya, lihat Alat mana yang didukung untuk proyek saya?.

  4. Pilih tombol Mulai untuk menjalankan alat.

  5. Pilih item dalam program Anda untuk diinstrumentasi.

    Cuplikan layar memperlihatkan dialog Pilih item ke instrumen.

    Mulai dari Visual Studio 2022 versi 17.11, profiler mempertahankan item yang dipilih untuk jalannya pembuatan profil berikutnya.

    Mulai dari Visual Studio 2022 versi 17.13 Pratinjau 1, Anda dapat memilih item yang akan diinstrumentasi untuk C++.

  6. Pilih OK.

  7. Setelah alat mulai berjalan, buka skenario yang ingin Anda profilkan di aplikasi Anda. Lalu pilih Hentikan pengumpulan atau tutup aplikasi untuk melihat data Anda.

Menganalisis laporan instrumentasi

Data pembuatan profil Anda muncul di Visual Studio.

Cuplikan layar memperlihatkan data Instrumentasi .NET.

Tampilan data Instrumentasi menunjukkan kepada Anda daftar fungsi yang diurutkan berdasarkan jangka panjang, dengan fungsi terlama di bagian atas di bawah Fungsi Teratas. Bagian Jalur Panas menunjukkan tumpukan panggilan untuk fungsi yang menggunakan waktu paling lama. Daftar ini dapat membantu memandu Anda ke fungsi di mana penyempitan performa terjadi.

Klik fungsi yang Anda minati, dan Anda melihat tampilan yang lebih rinci.

Data yang tersedia mirip dengan alat Penggunaan CPU, kecuali berdasarkan waktu jam dinding dan jumlah panggilan alih-alih pemanfaatan CPU.

Menganalisis wawasan

Jika ada wawasan yang muncul di bagian Top Insights, gunakan tautan yang disediakan untuk mendapatkan informasi selengkapnya tentang masalah yang diidentifikasi. Untuk informasi selengkapnya, lihat wawasan CPU, namun perlu diketahui bahwa informasi untuk alat Instrumentasi berfokus pada waktu aktual dan bukan pemanfaatan CPU.

Dapatkan bantuan AI

Jika Anda memiliki Copilot, Anda bisa mendapatkan bantuan AI saat melihat wawasan teratas. Copilot menyediakan informasi dan wawasan yang terkait dengan serangkaian wawasan performa tertentu. Dengan Copilot, Anda juga dapat mengajukan pertanyaan tentang fungsi pada jalur panas yang diidentifikasi dalam kode Anda, yang dapat membantu Anda menghasilkan kode yang lebih efisien atau hemat biaya.

Cuplikan layar tombol TanyaKan Salinan. muncul bahkan jika tidak ada wawasan performa tertentu yang diidentifikasi. Pilih Minta Copilot untuk mempelajari dari Copilot dan mulai mengajukan pertanyaan.

Menganalisis laporan terperinci instrumentasi

Untuk analisis mendalam laporan Instrumentasi, pertama-tama buka salah satu tampilan laporan terperinci:

  1. Klik Buka detail di halaman ringkasan laporan, atau pilih salah satu fungsi teratas untuk membuka tampilan Fungsi .

    Cuplikan layar yang memperlihatkan tautan Buka detail.

  2. Dari daftar Tampilan Saat Ini , Anda bisa memilih salah satu tampilan laporan terperinci.

    Cuplikan layar yang memperlihatkan daftar laporan terperinci.

Tabel berikut ini menyediakan deskripsi tampilan terperinci.

Tampilkan Deskripsi
Penelepon/penerima panggilan Tampilan terperinci waktu yang dihabiskan dalam fungsi tertentu, fungsi yang memanggilnya, dan fungsi yang dipanggilnya. Data performa dikumpulkan untuk periode pengumpulan data. Anda dapat memilih fungsi panggilan dan memanggil fungsi untuk melintasi jalur panggilan.
Pohon panggilan Tampilan hierarkis jalur panggilan fungsi. Digunakan untuk mengidentifikasi jalur panggilan yang memakan waktu paling lama (jalur panas).
Modul Tampilan waktu yang dihabiskan dalam modul individual, dikumpulkan selama periode pengumpulan data. Digunakan untuk mengidentifikasi modul yang mungkin menjadi hambatan performa karena kombinasi jumlah panggilan tinggi dan/atau masalah performa.
Functions Tampilan waktu yang dihabiskan dalam fungsi individual, dikumpulkan selama periode pengumpulan data. Digunakan untuk mengidentifikasi fungsi yang mungkin menjadi hambatan performa karena kombinasi jumlah panggilan tinggi dan/atau masalah performa.
Grafik Api Tampilan hierarkis jalur panggilan fungsi dalam visualisasi grafik api. Digunakan untuk mengidentifikasi jalur panggilan yang memakan waktu paling lama (jalur panas).

Dalam semua tampilan kecuali Penelepon/penerima panggilan, laporan diagnostik diurutkan menurut total [unit, %], dari tertinggi hingga terendah. Ubah urutan atau kolom pengurutan dengan memilih judul kolom. Anda dapat mengeklik dua kali pada fungsi yang Anda minati, dan Anda akan melihat sumber dari fungsi tersebut serta sorotan yang menunjukkan di mana waktu dihabiskan dalam fungsi tersebut. Tabel menunjukkan kolom dengan data seperti waktu yang dihabiskan dalam seluruh fungsi, termasuk fungsi yang dipanggil (Total), dan kolom kedua yang menunjukkan waktu yang dihabiskan dalam fungsi itu sendiri, tanpa fungsi yang dipanggil (Self).

Data ini dapat membantu Anda menilai apakah fungsi itu sendiri merupakan penyempitan performa. Tentukan berapa banyak data yang ditampilkan oleh metode untuk memastikan apakah kode pihak ketiga atau pustaka runtime merupakan alasan titik akhir Anda lambat atau berat dalam konsumsi sumber daya.

Untuk informasi selengkapnya tentang menggunakan grafik Api, lihat Mengidentifikasi jalur panas dengan Flame Graph.

Pohon panggilan instrumentasi

Untuk melihat pohon panggilan, pilih simpul induk dalam laporan. Secara default, halaman Instrumentasi terbuka ke tampilan Pemanggil/Callee. Di menu dropdown Tampilan Saat Ini, pilih Pohon Panggilan. Tampilan pohon panggilan dapat membantu Anda mengidentifikasi hambatan performa dengan cepat.

Anda dapat mengklik tombol Perluas Hot Path dan Tampilkan Hot Path untuk melihat panggilan fungsi yang menggunakan waktu jam dinding terbanyak dalam tampilan pohon panggilan.

Cuplikan layar yang memperlihatkan Struktur pohon panggilan.

Berikut adalah informasi selengkapnya tentang nilai kolom:

  • Total menunjukkan berapa banyak waktu yang dihabiskan dalam fungsi dan fungsi apa pun yang dipanggil olehnya. Nilai Total yang tinggi menunjukkan fungsi yang paling banyak memakan waktu pemrosesan.

  • Self menunjukkan berapa banyak waktu yang dihabiskan dalam isi fungsi, tidak termasuk waktu yang dihabiskan dalam fungsi apa pun yang dipanggil olehnya. Nilai mandiri yang tinggi dapat menunjukkan hambatan performa dalam fungsi itu sendiri.

  • Jumlah Panggilan menunjukkan berapa kali fungsi dipanggil.

  • Modul Nama modul yang berisi fungsi.

Untuk bantuan memahami data tak terduga di pohon panggilan, lihat Memahami pohon panggilan.

Panggilan asinkron di pohon panggilan Instrumentasi (.NET)

Mulai dari Visual Studio 2022 versi 17.13 Pratinjau 2, tampilan yang mewakili pohon panggilan visual menyatukan panggilan .NET asinkron di bawah fungsi tempat panggilan asinkron dilakukan, sehingga memudahkan pelacakan alur eksekusi dalam satu pelacakan tumpukan yang terpadu. Ini dapat membantu Anda mengidentifikasi hambatan performa dengan cepat.

Jejak tumpukan terpadu ditampilkan di tampilan Pohon Panggilan dan bagian Jalur Panas dari halaman Ringkasan. Simpul asinkron muncul dengan deskriptor [Async Call].

Cuplikan layar yang memperlihatkan Struktur pohon panggilan untuk panggilan asinkron.

Anda dapat mengalihkan tampilan tumpukan panggilan asinkron yang digabungkan dengan memilih Stitch Async Stacks dari opsi Filter dalam tampilan Ringkasan profiler. Pengaturan ini diaktifkan secara default.

Cuplikan layar yang memperlihatkan opsi Stick Async Stacks.