Bagikan melalui


Menganalisis data BenchmarkDotNet di Visual Studio

Anda dapat menggunakan alat pembuatan profil untuk mengumpulkan dan melihat data BenchmarkDotNet di Visual Studio. BenchmarkDotNet adalah pustaka .NET sumber terbuka yang dirancang untuk tolok ukur performa. Ini mengotomatiskan proses pengukuran dan membandingkan waktu eksekusi, penggunaan memori, dan metrik performa lainnya dari kode .NET Anda dengan cara yang dapat diandalkan dan dapat diulang.

Anda menggunakan BenchmarkDotNet dengan menginstal paket NuGet yang diperlukan dalam proyek Anda lalu menambahkan atribut ke kode Anda yang cocok dengan jenis informasi performa yang Anda minati.

Prasyarat

Menyiapkan proyek Anda

Atribut tolok ukur harus ditambahkan ke aplikasi konsol .NET. Atribut dapat ditambahkan ke fungsi pembungkus yang mereferensikan jenis proyek lain.

Untuk menyiapkan proyek Anda untuk dukungan BenchmarkDotNet, gunakan salah satu metode berikut:

  • Buka proyek konsol yang sudah ada atau buat proyek konsol baru. Dalam skenario ini, Anda menambahkan dukungan BenchmarkDotNet secara manual.

  • Gunakan templat Proyek Tolok Ukur . Beberapa langkah yang dijelaskan dalam artikel ini hanya diperlukan saat Anda menambahkan dukungan BenchmarkDotNet secara manual.

    Templat Proyek Tolok Ukur menghasilkan proyek BenchmarkDotNet yang terintegrasi penuh dengan dukungan bawaan untuk pembuatan profil Penggunaan CPU dan wawasan Copilot. Untuk menggunakan templat, pilih Pembuatan profil dari daftar jenis proyek saat Anda membuat proyek baru, lalu pilih Proyek Tolok Ukur. Untuk informasi tentang atribut, lihat Atribut kode Anda.

Cuplikan layar templat BenchmarkDotNet di Visual Studio.

Buat proyek konsol atau gunakan proyek konsol yang ada.

Atribut tolok ukur harus ditambahkan ke aplikasi konsol .NET. Atribut dapat ditambahkan ke fungsi pembungkus yang mereferensikan jenis proyek lain.

Atribut kode Anda

Saat Anda menambahkan diagnoser BenchmarkDotNet ke kelas tolok ukur sebagai atribut, Anda mengonfigurasi aplikasi untuk membuat file .diagsession setelah tolok ukur berjalan. Anda kemudian dapat membuka file .diagsession di Visual Studio dan melihat data pembuatan profil untuk tolok ukur.

Diagnoser berikut didukung:

  • Diagnoser Penggunaan CPU
  • DatabaseDiagnoser
  • DotNetCountersDiagnoser
  • EventsDiagnoser
  • FileIODiagnoser

Setiap diagnoser menghasilkan data performa yang terkait dengan diagnoser tersebut. Misalnya, CPUUsageDiagnoser menghasilkan file .diagsession dengan data CPU di dalamnya, dan DatabaseDiagnoser menghasilkan file .diagsession dengan data pada operasi database. Batasan sesuai dengan alat pembuatan profil terkait. Misalnya, alat Database profiler berfungsi pada ADO.NET atau Entity Framework Core.

Untuk mengaitkan kode Anda dengan pengdiagnosis dan tolok ukur:

  1. Tambahkan nama diagnoser sebagai atribut ke kelas yang berisi tolok ukur yang ingin Anda hasilkan datanya.

  2. Benchmark Tambahkan atribut ke metode yang ingin Anda uji performanya.

    Misalnya, Anda dapat menggunakan kode berikut untuk CPUUsageDiagnoser.

    Jika Anda menggunakan templat Proyek Tolok Ukur , kode sampel sudah disediakan dalam templat. Jika Anda menambahkan dukungan BenchmarkDotNet secara manual, Anda dapat menggunakan contoh kode berikut.

    using System;
    using System.Security.Cryptography;
    using BenchmarkDotNet.Attributes;
    using BenchmarkDotNet.Running;
    using Microsoft.VSDiagnostics;
    
    namespace MyBenchmarks
    {
        [CPUUsageDiagnoser]
        public class Md5VsSha256
        {
            private const int N = 10000;
            private readonly byte[] data;
    
            private readonly SHA256 sha256 = SHA256.Create();
            private readonly MD5 md5 = MD5.Create();
    
            public Md5VsSha256()
            {
                data = new byte[N];
                new Random(42).NextBytes(data);
            }
    
            [Benchmark]
            public byte[] Sha256() => sha256.ComputeHash(data);
    
            [Benchmark]
            public byte[] Md5() => md5.ComputeHash(data);
        }
    
        public class Program
        {
            public static void Main(string[] args)
            {
                var summary = BenchmarkRunner.Run(typeof(Program).Assembly);
            }
        }
    }
    

Mengumpulkan dan melihat data Benchmark.NET

  1. Atur build Anda ke tipe Rilis alih-alih build Debug.

  2. Jalankan aplikasi untuk menghasilkan file .diagsession .

    Periksa output konsol untuk mendapatkan lokasi file. Contohnya:

    // * Diagnostic Output - VSDiagnosticsDiagnoser * 
    Collection result moved to 'BenchmarkDotNet_Md5VsSha256_20231218_123326.diagsession'.
    Session : {7f38bcc2-c692-4266-aa24-b12bc5325ea4}
      Stopped
    Exported diagsession file: *.diagsession
    
  3. Di Visual Studio, pilih File Buka > File > dan navigasikan ke lokasi file .diagsession, lalu pilih dan buka file.

  4. Pilih tab Tolok Ukur untuk melihat data tolok ukur BenchmarkDotNet.

    Cuplikan layar data BenchmarkDotNet di Visual Studio.

    Untuk informasi selengkapnya tentang hasilnya di tab Tolok Ukur , lihat Dokumentasi BenchmarkDotNet .

  5. Klik kanan baris dalam hasil dan pilih Pilih rentang waktu untuk menyinkronkan grafik garis waktu dengan tolok ukur.

  6. Pilih salah satu tab yang tersedia seperti Penggunaan CPU atau Alokasi.

    Bergantung pada diagnoser yang Anda gunakan untuk mengumpulkan data, Anda dapat memperoleh wawasan yang terkait dengan alokasi memori, penggunaan CPU, penghitung, dan data performa lainnya. Untuk menganalisis alokasi memori, gunakan MemoryDiagnoser bawaan dengan menambahkan atribut [MemoryDiagnoser]. Untuk informasi selengkapnya, lihat Diagnoser.

    Nota

    Profiler hanya mendukung [MemoryDiagnoser] dan diagnoser yang tercantum sebelumnya dalam artikel ini.

    Untuk contoh penggunaan profiler untuk menganalisis alokasi memori, lihat posting blog Tolok Ukur dengan Visual Studio Profiler.

    Untuk menganalisis data yang terkait dengan tab lain seperti Penggunaan CPU, lihat artikel terkait dalam dokumentasi pembuatan profil.

Optimalkan dengan Copilot

Anda dapat memicu pengoptimalan alokasi CPU dan memori untuk tolok ukur BenchmarkDotNet Anda langsung dari editor menggunakan CodeLens. Ini membuat penyetelan performa lebih mudah diakses dan mulus, membantu Anda menemukan dan memperbaiki masalah alokasi CPU dan memori tepat di mana Anda membuat kode.

Pilih indikator CodeLens di atas tolok ukur Anda, lalu pilih opsi Optimalkan Alokasi dengan Copilot.

Cuplikan layar pengoptimalan dengan Copilot.