Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 33025|Yanıt: 2

[İletişim] .NET/C#, kod performansını test etmek için BenchmarkDotNet kullanır

[Bağlantıyı kopyala]
Yayınlandı 3.03.2021 15:51:12 | | | |
Gereksinimler: Geliştirme sürecinde, aynı iki fonksiyon yöntemi gereksinimlerimizi karşılayabilir, ancak performans nedenleriyle en iyi performans yöntemini seçeceğiz, kodun performansını nasıl test edeceğiz?

Performans kıyaslaması, programcılara iki kod parçası veya yönteminin performansını karşılaştırmasına yardımcı olabilir; bu da kodun yeniden yazılması veya yeniden düzenlemesi için iyi bir nicelik standardı sağlayabilir. Performans kıyaslamaları olmadan, yöntem A'yı yöntem B'ye değiştirdiğinizde çıplak gözle performans farkını nasıl anlayabileceğinizi hayal etmek zor.

BenchmarkDotNet, resmi web sitesinde bulunan güçlü bir .Net performans kıyaslama kütüphanesidirBağlantı girişi görünür.

İlk olarak, yeni bir .NET Core 3.1 konsol projesi oluşturacağız. Proje adı: BenchmarkTest

BenchmarkDotNet'i nuget komutuyla kurun, kod şu şekildedir:


Projenin hedef platformunu aşağıdaki gibi değiştirmek için projeye çift tıklayın:


TestMD5 ve TestSHA1 yöntemlerinin performansını sırasıyla .NET Framework 4.7.2 ve .NET Core 3.1 çerçeveleri altında test ediyoruz.

Kod şöyledir:


Aşağıdaki hatayla çalıştırmaya çalışın:

Kıyaslamaların doğrulanması:
Benchmarkları tanımlayan Assembly BenchmarkTest optimize edilmemiştir
Benchmark, optimizasyon etkinleştirilmeden (muhtemelen bir DEBUG yapılandırması) oluşturuldu. Lütfen, RELEASE içinde oluşturun.
Benchmark'ları hata ayıklamak isterseniz, lütfen bakınBağlantı girişi görünür.

Projeyi RELEASE moduna geçirinaşağıda gösterildiği gibi projeyi yeniden başlatmak için:


* Özet *

BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18363.1379 (1909/Kasım 2018Güncelleme/19H2)
Intel Core i5-8259U CPU 2.30GHz (Coffee Lake), 1 CPU, 8 mantıklı ve 4 fiziksel çekirdek
.NET Core SDK=5.0.103
  [Sunucu] : .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


|   Yöntem |           İş |       Çalışma süresi |     Kötü |     Hata |    StdDev |      Min |      Max |   Medyan |
|--------- |-------------- |-------------- |---------:|----------:|----------:|---------:|---------:|---------:|
|  TestMD5 |    .NET 4.7.2 |    .NET 4.7.2 | 4.119 ABD | 0.0804 ABD | 0.1045 ABD | 3.958 ABD | 4.318 ABD | 4.123 ABD |
| TestSHA1 |    .NET 4.7.2 |    .NET 4.7.2 | 4.043 ABD | 0.0793 ABD | 0.1085 ABD | 3.926 ABD | 4.289 ABD | 4.003 ABD |
|  TestMD5 | .NET Core 3.1 | .NET Core 3.1 | 1.216 ABD | 0.0122 ABD | 0.0114 ABD | 1.202 ABD | 1.238 ABD | 1.214 ABD |
| TestSHA1 | .NET Core 3.1 | .NET Core 3.1 | 1.307 ABD | 0.0186 ABD | 0.0165 ABD | 1.284 ABD | 1.336 ABD | 1.307 ABD |

* İpucuları *
Dışlamalar
  TestContext.TestSHA1: .NET 4.7.2 -> 1 outlier kaldırıldı (5.52 us)
  TestContext.TestSHA1: .NET Core 3.1 -> 1 outlier kaldırıldı (1.37 us)

* Efsaneler *
  Ortalama: Tüm ölçümlerin aritmetik ortalaması
  Hata: %99,9 güven aralığının yarısı
  StdDev: Tüm ölçümlerin standart sapması
  Min    : Minimum
  Max: Maksimum
  Medyan : Tüm ölçümlerin üst yarısını ayıran değer (yüzde 50. dilim)
  1 biz : 1 mikrosaniye (0.000001 saniye)

***** BenchmarkRunner: ***** Sonu
** Kaldı: 0 ölçüt(ler) kullanıldı **
Çalışma süresi: 00:01:14 (74 saniye), yürütülen benchmarklar: 4

Küresel toplam zaman: 00:01:20 (80.63 saniye), gerçekleştirilen benchmarklar: 4
* Eser temizliği *
Çalıştırıldığında, test sonuçları projemizde \BenchmarkTest\bin\Release\netcoreapp3.1\BenchmarkDotNet.Artifacts\results klasörüne, csv, html, md ve diğer formatlarda kaydedilir.



Not:SimpleJob hedef çerçeve seçimi yanlıştır ve doğru şekilde çalıştırılmayabilirŞöyle:

Paralel olarak derleme yapamadım, ardışık derlemeye geçtim


Kaynaklar:Bağlantı girişi görünür.




Önceki:Karşılaştırmanın Ötesinde: "Bu yetkilendirme anahtarı iptal edildi" hatasına çözüm
Önümüzdeki:C# web servis sunucusuna yapılan Java çağrıları HTTP başlığı SOAPAction'ın değerini tanımamaktadır
 Ev sahibi| Yayınlandı 31.03.2022 15:56:47 |
1. Ortalama çevirisi: ortalama, genellikle aritmetik ortalama veya geometrik ortalamayı ifade eder.

Anlatı: Tüm değerleri bir dizi dizide toplayın ve ortalamanın toplam sayısına bölünür.

2. Medyan çeviri: ara değer.

Anlatı: Bir dizi diziyi artan sırayla düzenleyin ve ardından orta değeri seçin, bu da orta değerdir.
 Ev sahibi| Yayınlandı 25.05.2023 20:13:33 |
.NET/C#, yüksek performanslı telleri işlemek için Span kullanır
https://www.itsvse.com/thread-10596-1-1.html
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com