Alat performa mana yang harus saya gunakan? (C#, Visual Basic, C++, F#)

Visual Studio menyediakan berbagai alat pembuatan profil untuk membantu Anda mendiagnosis berbagai jenis masalah performa aplikasi tergantung pada jenis aplikasi Anda. Dalam artikel ini, kami memberikan informasi untuk membantu Anda menemukan alat yang tepat untuk skenario dan jenis aplikasi Anda.

Untuk pendekatan umum untuk mengoptimalkan kode menggunakan alat pembuatan profil, lihat Studi kasus: Panduan pemula untuk mengoptimalkan kode.

Alat mana yang harus saya gunakan?

Tabel berikut mencantumkan berbagai alat yang ditawarkan Visual Studio dan menyediakan skenario umum untuk memilih alat.

Alat Kinerja Deskripsi Kapan menggunakan alat ini?
Penggunaan CPU Menunjukkan di mana CPU menghabiskan waktu. • Mulai penyelidikan untuk masalah performa umum.
• Selidiki penggunaan CPU server tinggi.
• Selidiki skenario DevOps, seperti ketika pesanan tidak masuk ke situs web ritel.
• Mengoptimalkan penggunaan CPU.
• Selidiki latensi dalam panggilan API.
grafik Api Lihat pada alat Penggunaan CPU yang menyediakan cara alternatif untuk memvisualisasikan pohon panggilan. Menyelidiki latensi dalam panggilan API
Jalur cepat Lihat dalam alat Penggunaan CPU yang menunjukkan di mana sebagian besar waktu CPU dihabiskan dalam aplikasi Anda. Menyelidiki latensi dalam panggilan API
Penggunaan Memori Menampilkan memori aplikasi Anda untuk menemukan masalah seperti kebocoran memori. • Mengoptimalkan penggunaan memori
• Selidiki pembekuan UI
• Selidiki dugaan kebocoran memori (kode asli)
Alokasi Objek .NET Memperlihatkan tempat Objek .NET dialokasikan dan informasi tentang pengumpulan sampah. • Mengoptimalkan penggunaan memori .NET
• Menganalisis pengumpulan sampah
Instrumentasi Menunjukkan jumlah panggilan dan waktu panggilan yang tepat. • Anda memerlukan alat seperti Penggunaan CPU, tetapi Anda menginginkan jumlah panggilan dan waktu yang tepat yang dihabiskan dalam fungsi berdasarkan waktu jam dinding.
• Anda ingin melihat waktu yang diblokir, seperti waktu yang dihabiskan untuk menunggu kunci.
• Catatan: Alat ini membutuhkan overhead ekstra.
Penghitung .NET Laporan langsung untuk penghitung .NET. • Mulai penyelidikan untuk masalah performa umum.
• Anda menginginkan pelacakan untuk metrik berbasis penghitung .NET seperti pengecualian (kesalahan) per detik, pengumpulan sampah, dan pemanfaatan CPU.
BenchmarkDotNet Laporan untuk tolok ukur berdasarkan BenchmarkDotNet. • Dapatkan visualisasi data yang dikumpulkan BenchmarkDotNet yang berbeda, seperti penggunaan CPU atau alokasi memori, berdasarkan diagnoser yang digunakan.
File I/O Memperlihatkan operasi I/O File Anda dan berapa lama waktu yang dibutuhkan dan berapa banyak data yang diproses. Menyelidiki pembekuan UI
PerfTips Menampilkan pengukuran cepat informasi performa saat berinteraksi dengan kode Anda. Saat melakukan debugging, Anda ingin melihat waktu yang telah berlalu antara operasi langkah sebelumnya (atau titik henti) hingga langkah atau titik henti saat ini.
Penampil Peristiwa Memperlihatkan permintaan HTTP, pesan log, dan pengecualian. • Selidiki latensi dalam panggilan API
• Selidiki aplikasi lambat yang berjalan di server web jarak jauh
.NET Asinkron Menampilkan penggunaan asinkron/tunggu di aplikasi .NET. Selidiki dugaan masalah performa dengan kode asinkron.
Basis Data Memperlihatkan performa kueri database Anda. Selidiki performa untuk kueri database yang menggunakan ADO.NET atau Entity Framework Core.
Penggunaan GPU Menampilkan penggunaan perangkat keras tingkat tinggi dari aplikasi Direct3D Anda. Periksa apakah performa aplikasi Anda terikat CPU atau terikat GPU.
Garis Waktu Aplikasi Menampilkan performa UI untuk aplikasi XAML. Selidiki performa UI di aplikasi XAML, seperti waktu yang dihabiskan untuk merender bingkai.
IntelliTrace Alat debugger yang memungkinkan Anda merekam peristiwa dan memeriksa status aplikasi Anda di berbagai titik eksekusi. Anda ingin alat memeriksa status aplikasi di berbagai titik, bukan hanya status aplikasi saat ini.

Alat mana yang didukung untuk proyek saya?

Tabel berikut mencantumkan berbagai alat yang ditawarkan Visual Studio dan berbagai jenis proyek yang dapat Anda gunakan dengan:

Alat Kinerja .JARING C/C++ UWP ASP.NET/ASP.NET Core
Penggunaan CPU Ya Ya Ya Ya
Penggunaan Memori Ya Ya Ya Ya
Alokasi Objek .NET Ya Tidak Ya Ya
Instrumentasi Ya Ya Ya Ya
Penghitung .NET ya (hanya .NET Core/5+) Tidak Tidak Ya (hanya ASP.NET Core)
BenchmarkDotNet Ya Tidak Tidak Parsial
File I/O Ya Ya Ya Ya
PerfTips Ya Ya Ya Ya
Penampil Peristiwa Ya Ya Ya Ya
.NET Asinkron Ya Tidak Ya Ya
Basis Data ya (hanya .NET Core/5+) Tidak Tidak Ya (hanya ASP.NET Core)
Penggunaan GPU Ya Ya Ya Tidak
Garis Waktu Aplikasi Ya (XAML) Tidak Ya Tidak
Penjelajah Performa Tidak Tidak Tidak Tidak
IntelliTrace .NET hanya dengan Visual Studio Enterprise Tidak .NET hanya dengan Visual Studio Enterprise .NET hanya dengan Visual Studio Enterprise

Dukungan untuk proyek CMake sama dengan C++. Untuk Penggunaan CPU, Penggunaan Memori, I/O File, dan penampil Peristiwa, Anda dapat menjalankan alat pembuatan profil terhadap proyek startup. Namun, untuk Instrumentasi dan Penggunaan GPU, Anda harus menetapkan executable sebagai target di Profiler Performa (Alt + F2) dengan memilih Executable sebagai Proyek Startup.

Dukungan untuk proyek CMake sama dengan C++. Namun, Anda harus menetapkan executable sebagai target di Profiler Performa (Alt + F2) dengan memilih Executable sebagai Proyek Startup.

Alat mana yang didukung di Linux?

Alat berikut didukung dengan Linux atau WSL sebagai platform target serta Windows:

  • Penggunaan CPU
  • Pelacakan Alokasi Objek dalam .NET
  • .NET Asinkron
  • Penghitung .NET
  • BenchmarkDotNet
  • Penampil Peristiwa
  • Basis data

Pelajari cara menggunakan profiler

Artikel dan posting blog berikut ini menyediakan informasi selengkapnya untuk membantu Anda belajar menggunakan alat performa Visual Studio secara efektif.