Bagikan melalui


Menganalisis performa dengan menggunakan pembuatan profil CPU di Profiler Performa (C#, Visual Basic, C++, F#)

Cara yang baik untuk mulai menyelidiki masalah performa di aplikasi Anda adalah dengan memahami pemanfaatan CPU-nya menggunakan profiler CPU. Alat performa Penggunaan CPU Visual Studio menunjukkan waktu komputasi aktif CPU dan persentase yang dihabiskan untuk mengeksekusi kode di C++, C#/Visual Basic.

Alat Penggunaan CPU dapat membantu Anda:

  • Diagnosis pelambatan atau proses yang macet di basis kode tim Anda. Alat ini dapat membantu Anda mendiagnosis masalah dengan kode produksi tim Anda. Ini memberikan wawasan otomatis dan berbagai tampilan data Anda sehingga Anda dapat menganalisis dan mendiagnosis masalah performa.

  • Identifikasi masalah performa dalam skenario DevOps Misalnya, alat ini dapat membantu ketika pelanggan melaporkan bahwa beberapa permintaan atau pesanan tidak masuk ke situs web ritel selama musim sibuk. Sering kali, masalahnya sedang dalam produksi, dan sulit untuk men-debug pada saat itu, tetapi alat ini dapat membantu Anda mendapatkan informasi dan bukti masalah yang cukup. Setelah mengumpulkan file pelacakan, analisis dapat dengan cepat membantu Anda memahami potensi penyebab dan memberikan saran dalam konteks kode sehingga Anda dapat mengambil langkah-langkah berikutnya untuk memperbaiki masalah.

  • Periksa pemanfaatan CPU yang tinggi Jika masalah latensi Anda tidak berada dalam permintaan API, maka Anda dapat memeriksa pemanfaatan CPU yang tinggi dan masalah terkait lainnya dengan alat Penggunaan CPU. Alat Penggunaan CPU dapat membantu Anda mengidentifikasi hambatan sehingga Anda dapat mempersempit tempat untuk mengoptimalkan.

Alat Penggunaan CPU berguna untuk sesi pelacakan lokal dan produksi. Anda dapat menjalankan alat Penggunaan CPU dengan menggunakan pintasan keyboard, Alt+F2, lalu memilih Penggunaan CPU, atau dengan membuka jejak yang sudah dikumpulkan menggunakan alat seperti dotnet-trace atau dotnet-monitor. (Untuk kode produksi .NET, ini kemungkinan besar bagaimana Anda akan mengumpulkan jejak.)

Anda dapat menjalankan alat Penggunaan CPU pada proyek Visual Studio yang terbuka, pada aplikasi Microsoft Store yang diinstal, atau dilampirkan ke aplikasi atau proses yang sedang berjalan. Anda dapat menjalankan alat Penggunaan CPU dengan atau tanpa penelusuran kesalahan. Untuk informasi selengkapnya, lihat Menjalankan alat pemrofilan dengan atau tanpa penelusur kesalahan.

Instruksi berikut menunjukkan cara menggunakan alat Penggunaan CPU tanpa debugger, menggunakan Profiler Performa Visual Studio. Contohnya menggunakan build Rilis pada komputer lokal. Build Rilis memberikan tampilan terbaik dari performa aplikasi aktual. Untuk tutorial yang menunjukkan cara meningkatkan performa menggunakan alat Penggunaan CPU, lihat Studi kasus: Panduan pemula untuk mengoptimalkan kode.

Biasanya, komputer lokal paling baik mereplikasi eksekusi aplikasi yang diinstal. Untuk mengumpulkan data dari perangkat jarak jauh, jalankan aplikasi langsung di perangkat, bukan melalui Koneksi Desktop Jarak Jauh.

Mengumpulkan data pemanfaatan CPU

  1. Dalam proyek Visual Studio, atur konfigurasi solusi ke Rilis dan pilih Debugger Windows Lokal (atau Komputer Lokal) sebagai target penyebaran.

    Cuplikan layar yang memperlihatkan Pilih Rilis dan Komputer Lokal.

    Cuplikan layar yang memperlihatkan Pilih Rilis dan Komputer Lokal.

  2. Pilih Debug>Profiler Performa.

  3. Di bawah Alat yang tersedia, pilih Penggunaan CPU, lalu pilih Mulai.

    Cuplikan layar yang memperlihatkan Pilih Penggunaan CPU.

    Cuplikan layar yang memperlihatkan Pilih Penggunaan CPU.

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

    Catatan

    Untuk informasi selengkapnya tentang cara membuat alat lebih efisien, lihat Mengoptimalkan pengaturan Pembuat profil.

  4. Setelah aplikasi dimulai, sesi diagnostik dimulai dan menampilkan data pemanfaatan CPU. Setelah selesai mengumpulkan data, pilih Hentikan Koleksi.

    Cuplikan layar yang memperlihatkan Hentikan pengumpulan data Penggunaan CPU.

    Cuplikan layar yang memperlihatkan Hentikan pengumpulan data Penggunaan CPU.

    Alat Penggunaan CPU menganalisis data dan menampilkan laporan. Jika Anda mengalami masalah saat mengumpulkan atau menampilkan data, lihat Memecahkan masalah kesalahan pembuatan profil dan memperbaiki masalah.

    Cuplikan layar yang memperlihatkan laporan Penggunaan CPU.

    Cuplikan layar yang memperlihatkan laporan Penggunaan CPU.

    Gunakan menu drop-down Filter untuk memilih atau membatalkan pilihan utas yang akan ditampilkan, dan gunakan kotak Pencarian untuk mencari utas atau node tertentu.

Kolom data pemanfaatan CPU

Nama Deskripsi
Total CPU [unit, %] Total % persamaan data

Milidetik waktu komputasi CPU dan persentase CPU yang digunakan oleh panggilan ke fungsi, dan fungsi yang dipanggil oleh fungsi, dalam rentang waktu yang dipilih. Ini berbeda dari grafik garis waktu Pemanfaatan CPU, yang membandingkan total aktivitas CPU dalam rentang waktu dengan total CPU yang tersedia.
CPU mandiri [unit, %] Persamaan %mandiri

Milidetik waktu komputasi CPU dan persentase CPU yang digunakan oleh panggilan ke fungsi dalam rentang waktu yang dipilih, tidak termasuk fungsi yang dipanggil oleh fungsi.
Modul Dalam beberapa tampilan, kolom Modul ditampilkan, yang menunjukkan nama modul yang berisi fungsi.

Menganalisis wawasan CPU

Jika ada wawasan yang muncul di bagian Wawasan Teratas, gunakan tautan yang disediakan untuk mendapatkan informasi selengkapnya tentang masalah yang diidentifikasi. Selain itu, jika Anda menggunakan Copilot, tombol Ask Copilot akan membuka jendela obrolan Copilot, dan Copilot akan memberikan saran berdasarkan kode Anda dan masalah yang diidentifikasi.

Untuk informasi selengkapnya, lihat Wawasan CPU.

Menganalisis pemanfaatan CPU

Untuk menganalisis laporan Penggunaan CPU, klik Buka detail, atau klik salah satu fungsi teratas untuk membuka tampilan Fungsi .

Laporan ini menyediakan tampilan data diagnostik yang berbeda:

  • Penelepon/penerima panggilan
  • Pohon panggilan
  • Modul
  • Fungsi
  • Grafik api

Untuk menganalisis laporan, klik Buat laporan terperinci.

Laporan ini menyediakan tampilan data diagnostik yang berbeda:

  • Penelepon/penerima panggilan
  • Pohon panggilan

Dalam semua tampilan kecuali Penelepon/penerima panggilan, laporan diagnostik diurutkan menurut Total CPU, dari tertinggi hingga terendah. Ubah urutan pengurutan atau kolom pengurutan dengan memilih header kolom. Anda dapat mengeklik dua kali pada fungsi yang Anda minati, dan Anda akan melihat sumber untuk fungsi serta menyoroti yang menunjukkan di mana waktu dihabiskan dalam fungsi tersebut. Tabel memperlihatkan kolom dengan data seperti waktu yang dihabiskan dalam fungsi, termasuk fungsi yang disebut (Total CPU), dan kolom kedua yang memperlihatkan waktu yang dihabiskan dalam fungsi, tidak termasuk fungsi yang disebut (CPU Mandiri).

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

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

Pohon panggilan Penggunaan CPU

Untuk melihat pohon panggilan, pilih node induk dalam laporan. Secara default, halaman Penggunaan CPU terbuka ke tampilan Penelepon/Callee . Di menu dropdown Tampilan Saat Ini, pilih Pohon Panggilan.

Anda dapat mengklik tombol Perluas Jalur Panas dan Tampilkan Jalur Panas untuk melihat panggilan fungsi yang menggunakan persentase tertinggi CPU dalam tampilan pohon panggilan.

Struktur pohon panggilan

Cuplikan layar yang memperlihatkan Struktur pohon panggilan.

Cuplikan layar yang memperlihatkan Struktur pohon panggilan.

Gambar Deskripsi
Langkah 1 Simpul tingkat atas dalam pohon panggilan Penggunaan CPU, mewakili aplikasi.
Langkah 2 Di sebagian besar aplikasi, saat opsi Tampilkan Kode Eksternal dinonaktifkan, node tingkat kedua adalah node [Kode Eksternal ]. Node berisi sistem dan kode kerangka kerja yang memulai dan menghentikan aplikasi, menggambar UI, mengontrol penjadwalan utas, dan menyediakan layanan tingkat rendah lainnya ke aplikasi.
Langkah 3 Elemen turunan dari node tingkat kedua adalah metode kode pengguna dan rutinitas asinkron yang dipanggil atau dibuat oleh sistem tingkat kedua dan kode kerangka kerja.
Langkah 4 Node turunan dari suatu metode hanya memiliki data untuk pemanggilan metode induk. Saat Tampilkan Kode Eksternal dinonaktifkan, metode aplikasi juga dapat berisi node [Kode Eksternal].

Kode eksternal

Fungsi sistem dan kerangka kerja yang dijalankan oleh kode Anda disebut kode eksternal. Fungsi kode eksternal memulai dan menghentikan aplikasi, menggambar UI, mengontrol utas, dan menyediakan layanan tingkat rendah lainnya ke aplikasi. Dalam kebanyakan kasus, Anda tidak tertarik dengan kode eksternal, sehingga pohon panggilan Penggunaan CPU mengumpulkan fungsi eksternal metode pengguna ke dalam satu simpul [Panggilan Eksternal] .

Untuk melihat jalur panggilan kode eksternal, pada halaman ringkasan laporan utama (panel kanan), batal pilih Perlihatkan Hanya Kode Saya dari menu dropdown Pengaturan , lalu pilih Terapkan. (Dropdown pengaturan tersedia di halaman ringkasan laporan utama, bukan tampilan terperinci.)

Cuplikan layar yang memperlihatkan Pengaturan, lalu Tampilkan Hanya Kode Saya.

Fungsi sistem dan kerangka kerja yang dijalankan oleh kode Anda disebut kode eksternal. Fungsi kode eksternal memulai dan menghentikan aplikasi, menggambar UI, mengontrol utas, dan menyediakan layanan tingkat rendah lainnya ke aplikasi. Dalam kebanyakan kasus, Anda tidak tertarik dengan kode eksternal, sehingga pohon panggilan Penggunaan CPU mengumpulkan fungsi eksternal dari metode pengguna ke dalam satu node [Kode Eksternal].

Untuk menampilkan jalur panggilan kode eksternal, pada halaman laporan diagnostik utama (panel kanan), pilih Tampilkan Kode Eksternal dari menu dropdown Filter, lalu pilih Terapkan. Tampilan Pohon Panggilan dari halaman Penggunaan CPU lalu memperluas panggilan kode eksternal. (Menu drop-down Filter tersedia di halaman diagnostik utama, bukan tampilan terperinci.)

Cuplikan layar yang memperlihatkan Perlihatkan Kode Eksternal.

Saat Anda menonaktifkan Perlihatkan Hanya Kode Saya, tampilan Pohon Panggilan dari halaman Penggunaan CPU memperluas panggilan kode eksternal.

Banyak rantai panggilan kode eksternal disarangkan secara mendalam, sehingga lebar rantai dapat melebihi lebar tampilan kolom Nama Fungsi. Nama-nama fungsi kemudian muncul seperti yang ditunjukkan pada gambar berikut.

Cuplikan layar yang memperlihatkan kode eksternal berlapis di pohon panggilan.

Banyak rantai panggilan kode eksternal disarangkan secara mendalam, sehingga lebar rantai dapat melebihi lebar tampilan kolom Nama Fungsi. Nama fungsi kemudian muncul sebagai ....

Cuplikan layar yang memperlihatkan kode eksternal berlapis di pohon panggilan.

Untuk menemukan nama fungsi yang Anda cari, gunakan kotak pencarian. Arahkan kursor ke garis yang dipilih atau gunakan bilah gulir horizontal untuk melihat data.

Cuplikan layar yang memperlihatkan Cari kode eksternal berlapis.

Cuplikan layar yang memperlihatkan Cari kode eksternal berlapis.

Fungsi asinkron di pohon panggilan penggunaan CPU

Ketika menemukan metode asinkron, kompilator membuat kelas tersembunyi untuk mengontrol eksekusi metode. Secara konseptual, kelasnya adalah mesin status. Kelas ini memiliki fungsi yang dihasilkan kompilator yang secara asinkron memanggil metode asli, dan panggilan balik, penjadwal, dan iterator yang diperlukan untuk menjalankannya. Ketika metode induk memanggil metode asli, kompilator menghapus metode dari konteks eksekusi induk, dan menjalankan metode kelas tersembunyi dalam konteks sistem dan kode kerangka kerja yang mengontrol eksekusi aplikasi. Metode asinkron sering kali, tetapi tidak selalu, dijalankan pada satu atau beberapa utas yang berbeda. Kode ini muncul di pohon panggilan Penggunaan CPU sebagai turunan dari node [Kode Eksternal] tepat di bawah node atas pohon.

Dalam contoh berikut, dua node pertama di bawah [Kode Eksternal] adalah metode yang dihasilkan kompilator dari kelas komputer status. Node ketiga adalah panggilan ke metode asli.

Cuplikan layar yang memperlihatkan simpul Asinkron.

Perluas metode yang dihasilkan untuk menunjukkan apa yang terjadi:

Cuplikan layar yang memperlihatkan simpul asinkron yang diperluas.

Cuplikan layar yang memperlihatkan simpul asinkron yang diperluas.

  • MainPage::GetMaxNumberAsyncButton_Click hanya mengelola daftar nilai tugas, menghitung hasil maksimum, dan menampilkan output.

  • MainPage+<GetMaxNumberAsyncButton_Click>d__3::MoveNext menunjukkan aktivitas yang diperlukan untuk menjadwalkan dan meluncurkan 48 tugas yang membungkus panggilan ke GetNumberAsync.

  • MainPage::<GetNumberAsync>b__b menunjukkan aktivitas tugas yang memanggil GetNumber.

Mengumpulkan jumlah panggilan (.NET)

Jika Anda ingin melihat jumlah panggilan dalam tampilan Functions, Anda dapat mengaktifkan pengaturan sebelum memulai profiler. Pengaturan ini didukung untuk jenis proyek .NET dan memerlukan peluncuran proses di bawah profiler. Skenario lampirkan tidak didukung.

  1. Pilih ikon Pengaturan untuk Penggunaan CPU di Profiler Performa.

    Cuplikan layar yang memperlihatkan ikon pengaturan untuk Penggunaan CPU.

  2. Aktifkan opsi Kumpulkan jumlah panggilan (hanya.NET).

    Cuplikan layar yang memperlihatkan pengaturan untuk Penggunaan CPU.

  3. Mengumpulkan data penggunaan CPU.

  4. Buka tampilan Fungsi, lalu pastikan kolom Jumlah panggilan diatur ke terlihat.

    Jika Anda tidak melihat kolom, klik kanan judul kolom untuk memilih kolom yang terlihat.

    Cuplikan layar yang memperlihatkan data jumlah panggilan.