Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 33025|Odgovoriti: 2

[Komunikacija] .NET/C# uporablja BenchmarkDotNet za testiranje zmogljivosti kode

[Kopiraj povezavo]
Objavljeno na 3. 03. 2021 15:51:12 | | | |
Zahteve: V razvojnem procesu lahko isti dve funkcijski metodi izpolnita naše zahteve, vendar bomo zaradi zmogljivosti izbrali najboljšo metodo za klice, kako testirati zmogljivost kode?

Benchmarking zmogljivosti lahko programerjem pomaga primerjati zmogljivost dveh kodnih odlomkov ali metod, kar lahko zagotovi dober standard za kvantifikacijo za prepisovanje ali refaktoriranje kode. Brez meril zmogljivosti si je težko predstavljati, kako lahko z golim očesom opaziš razliko v zmogljivosti, ko zamenjaš metodo A na metodo B.

BenchmarkDotNet je zmogljiva knjižnica za .Net zmogljivost na uradni spletni straniPrijava do hiperpovezave je vidna.

Najprej bomo ustvarili nov .NET Core 3.1 konzolni projekt. Ime projekta je: BenchmarkTest

Namestite BenchmarkDotNet z ukazom nuget, koda je naslednja:


Dvojni klik na projekt, da spremenite ciljno platformo projekta, kot sledi:


Testiramo zmogljivost metod TestMD5 in TestSHA1 pod ogrodji .NET Framework 4.7.2 in .NET Core 3.1.

Koda je naslednja:


Poskusite ga zagnati z naslednjo napako:

Preverjanje meril:
Assembly BenchmarkTest, ki definira benchmarke, ni optimiziran
Benchmark je bil zgrajen brez omogočene optimizacije (najverjetneje DEBUG konfiguracija). Prosim, zgradite ga v RELEASE.
Če želite razhroščevati teste, si oglejtePrijava do hiperpovezave je vidna.

Preklopite projekt v način RELEASEZa ponovni začetek projekta, kot je prikazano spodaj:


* Povzetek *

BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18363.1379 (1909/November2018Update/19H2)
Intel Core i5-8259U procesor 2,30 GHz (Coffee Lake), 1 procesor, 8 logičnih in 4 fizična jedra
.NET Core SDK=5.0.103
  [Gostitelj] : .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


|   Metoda |           Delo |       Čas izvajanja |     Povprečje |     Napaka |    StdDev |      Min |      Max |   Mediana |
|--------- |-------------- |-------------- |---------:|----------:|----------:|---------:|---------:|---------:|
|  TestMD5 |    .NET 4.7.2 |    .NET 4.7.2 | 4.119 ZDA | 0,0804 ZDA | 0,1045 ZDA | 3.958 ZDA | 4.318 ZDA | 4.123 ZDA |
| TestSHA1 |    .NET 4.7.2 |    .NET 4.7.2 | 4.043 ZDA | 0,0793 ZDA | 0,1085 ZDA | 3.926 ZDA | 4.289 ZDA | 4.003 ZDA |
|  TestMD5 | .NET Core 3.1 | .NET Core 3.1 | 1.216 ZDA | 0,0122 ZDA | 0.0114 us | 1.202 ZDA | 1.238 ZDA | 1.214 ZDA |
| TestSHA1 | .NET Core 3.1 | .NET Core 3.1 | 1.307 ZDA | 0,0186 ZDA | 0,0165 ZDA | 1.284 ZDA | 1.336 ZDA | 1.307 ZDA |

* Namigi *
Odstopanja
  TestContext.TestSHA1: .NET 4.7.2 -> 1 odstopanje je bilo odstranjeno (5.52 us)
  TestContext.TestSHA1: .NET Core 3.1 -> 1 odstopanje je bilo odstranjeno (1.37 ZDA)

* Legende *
  Povprečje : Aritmetično povprečje vseh meritev
  Napaka: polovica 99,9 % intervala zaupanja
  StdDev : Standardni odklon vseh meritev
  Min: Minimum
  Max : Maximum
  Mediana: Vrednost, ki ločuje zgornjo polovico vseh meritev (50. percentil)
  1 us : 1 mikrosekunda (0,000001 sek)

***** BenchmarkRunner: Konec *****
** Ostalo je 0 referenčnih točk za zagon **
Čas izvajanja: 00:01:14 (74 sek), izvedeni testi: 4

Skupni globalni čas: 00:01:20 (80,63 sek), izvedeni testi: 4
* Čiščenje artefaktov *
Ko se zaženejo, se rezultati testa shranijo v mapo projekta \BenchmarkTest\bin\Release\netcoreapp3.1\BenchmarkDotNet.Artifacts\results, v csv, html, md in drugih formatih.



Opomba:Izbor ciljnih okvirjev v SimpleJobu je napačen in morda ne bo pravilno izvedenKot sledi:

Ni uspelo zgraditi vzporedno, zato sem prešel na sekvenčno gradnjo


Sredstva:Prijava do hiperpovezave je vidna.




Prejšnji:Beyond Compare Rešitev za napako "Ta avtorizacijski ključ je bil preklican"
Naslednji:Java klici na C# spletni strežnik ne prepoznajo vrednosti HTTP glave SOAPAction
 Najemodajalec| Objavljeno na 31. 03. 2022 15:56:47 |
1. Povprečna translacija: povprečje, običajno se nanaša na aritmetično povprečje ali geometrijsko povprečje.

Pripoved: Seštejte vse vrednosti v nizu zaporedij in delite s skupnim številom, ki je povprečje.

2. Mediana translacije: vmesna vrednost.

Pripoved: Razporedite niz zaporedij v naraščajočem vrstnem redu in nato vzemite srednjo vrednost, ki je srednja vrednost.
 Najemodajalec| Objavljeno na 25. 05. 2023 20:13:33 |
.NET/C# uporablja Span za obdelavo nizov z visoko zmogljivostjo
https://www.itsvse.com/thread-10596-1-1.html
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com