Persyaratan: Dalam proses pengembangan, dua metode fungsi yang sama dapat memenuhi persyaratan kami, tetapi untuk alasan kinerja, kami akan memilih metode kinerja terbaik untuk menelepon, bagaimana cara menguji kinerja kode?
Tolok ukur performa dapat membantu pemrogram membandingkan performa dua cuplikan atau metode kode, yang dapat memberikan standar kuantifikasi yang baik untuk penulisan ulang atau pemfaktoran ulang kode. Tanpa tolok ukur kinerja, sulit membayangkan bagaimana Anda dapat membedakan kinerja dengan mata telanjang ketika Anda mengubah metode A ke metode B.
BenchmarkDotNet adalah pustaka benchmark kinerja .Net yang kuat di situs web resmiLogin hyperlink terlihat.
Pertama, kita akan membuat proyek konsol .NET Core 3.1 baru. Nama proyeknya adalah: BenchmarkTest
Instal BenchmarkDotNet menggunakan perintah nuget, kodenya adalah sebagai berikut:
Klik dua kali proyek untuk mengubah platform target proyek, sebagai berikut:
Kami menguji performa metode TestMD5 dan TestSHA1 di bawah kerangka kerja .NET Framework 4.7.2 dan .NET Core 3.1, masing-masing.
Kodenya adalah sebagai berikut:
Cobalah untuk menjalankannya dengan kesalahan berikut:
Memvalidasi tolok ukur: Assembly BenchmarkTest yang mendefinisikan tolok ukur tidak dioptimalkan Benchmark dibangun tanpa pengoptimalan diaktifkan (kemungkinan besar konfigurasi DEBUG). Tolong, bangun di RELEASE. Jika Anda ingin men-debug tolok ukur, silakan lihatLogin hyperlink terlihat.
Alihkan proyek ke mode RELEASEuntuk memulai proyek lagi, seperti yang ditunjukkan di bawah ini:
* Ringkasan *
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18363.1379 (1909/November2018Update/19H2) CPU Intel Core i5-8259U 2.30GHz (Coffee Lake), 1 CPU, 8 inti logis, dan 4 inti fisik .NET Core SDK=5.0.103 [Host] : .NET Core 3.1.12 (CoreCLR 4.700.21.6504, CoreFX 4.700.21.6905), X64 RyuJIT .NET 4.7.2 : .NET Framework 4.8 (4.8.4300.0), X64 RyuJIT .NET Core 3.1 : .NET Core 3.1.12 (CoreCLR 4.700.21.6504, CoreFX 4.700.21.6905), X64 RyuJIT
| Metode | Pekerjaan | Runtime | Berarti | Kesalahan | StdDev | Min | Maks | Median | |--------- |-------------- |-------------- |---------:|----------:|----------:|---------:|---------:|---------:| | TesMD5 | .NET 4.7.2 | .NET 4.7.2 | 4.119 AS | 0.0804 AS | 0.1045 AS | 3.958 AS | 4.318 AS | 4.123 AS | | TesSHA1 | .NET 4.7.2 | .NET 4.7.2 | 4.043 AS | 0.0793 AS | 0.1085 AS | 3.926 AS | 4.289 AS | 4.003 AS | | TestMD5 | .NET Core 3.1 | .NET Core 3.1 | 1.216 AS | 0.0122 AS | 0.0114 AS | 1.202 AS | 1.238 AS | 1.214 AS | | TestSHA1 | .NET Core 3.1 | .NET Core 3.1 | 1.307 AS | 0.0186 AS | 0.0165 AS | 1.284 AS | 1.336 AS | 1.307 AS |
* Petunjuk * Outlier TestContext.TestSHA1: .NET 4.7.2 -> 1 outlier dihapus (5.52 us) TestContext.TestSHA1: .NET Core 3.1 -> 1 outlier dihapus (1.37 us)
* Legenda * Rata-rata : Rata-rata aritmatika dari semua pengukuran Kesalahan : Setengah dari interval kepercayaan 99,9% StdDev : Standar deviasi dari semua pengukuran Min : Minimum Maks : Maksimum Median : Nilai yang memisahkan separuh atas dari semua pengukuran (persentil ke-50) 1 AS: 1 Mikrodetik (0,000001 detik)
***** BenchmarkRunner: Akhiri ***** ** Tetap 0 tolok ukur untuk berjalan ** Waktu tayang: 00:01:14 (74 detik), tolok ukur yang dieksekusi: 4
Total waktu global: 00:01:20 (80,63 detik), tolok ukur yang dieksekusi: 4 * Pembersihan artefak * Setelah dijalankan, hasil pengujian disimpan ke folder proyek kami \BenchmarkTest\bin\Release\netcoreapp3.1\BenchmarkDotNet.Artifacts\results, dalam format csv, html, md, dan lainnya.
Nota:Pemilihan bingkai target SimpleJob salah dan mungkin tidak dijalankan dengan benarSebagai berikut:
Gagal membangun di Paralel, beralih ke build berurutan
Sumber daya:Login hyperlink terlihat.
|