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.
|