Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 33025|Jawab: 2

[Komunikasi] .NET/C# menggunakan BenchmarkDotNet untuk menguji performa kode

[Salin tautan]
Diposting pada 03/03/2021 15.51.12 | | | |
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.




Mantan:Beyond Compare Solution dengan error "Kunci otorisasi ini telah dicabut"
Depan:Panggilan Java ke server layanan web C# gagal mengenali nilai header HTTP SOAPAction
 Tuan tanah| Diposting pada 31/03/2022 15.56.47 |
1. Terjemahan rata-rata: rata-rata, biasanya mengacu pada rata-rata aritmatika, atau rata-rata geometris.

Narasi: Jumlahkan semua nilai dalam serangkaian urutan dan bagi dengan jumlah total, yang merupakan rata-rata.

2. Terjemahan median: nilai menengah.

Narasi: Susun serangkaian urutan dalam urutan menaik, lalu ambil nilai tengah, yang merupakan nilai tengah.
 Tuan tanah| Diposting pada 25/05/2023 20.13.33 |
.NET/C# menggunakan Span untuk menangani string dengan performa tinggi
https://www.itsvse.com/thread-10596-1-1.html
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com