Nõuded: Arendusprotsessis võivad samad kaks funktsioonimeetodit täita meie nõudmisi, kuid jõudluse huvides valime parima jõudlusmeetodi kutsumiseks, kuidas koodi jõudlust testida?
Jõudluse võrdlus aitab programmeerijatel võrrelda kahe koodilõigu või meetodi jõudlust, mis võib pakkuda head kvantifitseerimisstandardit koodi ümberkirjutamiseks või refaktoreerimiseks. Ilma jõudlusnäitajateta on raske ette kujutada, kuidas palja silmaga vahet teha, kui vahetad meetodi A meetodiks B.
BenchmarkDotNet on võimas .Net jõudluse võrdlusteek ametlikul veebilehelHüperlingi sisselogimine on nähtav.
Esmalt loome uue .NET Core 3.1 konsooliprojekti. Projekti nimi on: BenchmarkTest
Paigalda BenchmarkDotNet nuget-käsuga, kood on järgmine:
Topeltklõpsa projektile, et muuta projekti sihtplatvormi järgmiselt:
Testime TestMD5 ja TestSHA1 meetodite jõudlust vastavalt .NET Framework 4.7.2 ja .NET Core 3.1 raamistikus.
Kood on järgmine:
Proovi seda käivitada järgmise veaga:
Võrdlusaluste valideerimine: Assembly BenchmarkTest, mis määratleb benchmarkid, ei ole optimeeritud Benchmark loodi ilma optimeerimiseta (tõenäoliselt DEBUG konfiguratsiooniga). Palun, ehita see RELEASE'is. Kui soovid benchmarke siluda, vaata palunHüperlingi sisselogimine on nähtav.
Lülita projekt RELEASE režiimiet alustada projekti uuesti, nagu allpool näidatud:
* Kokkuvõte *
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18363.1379 (1909/november2018Update/19H2) Intel Core i5-8259U protsessor 2.30GHz (Coffee Lake), 1 protsessor, 8 loogilist ja 4 füüsilist tuuma .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
| Meetod | Töö | Kestus | Mean | Viga | StdDev | Min | Max | Mediaan | |--------- |-------------- |-------------- |---------:|----------:|----------:|---------:|---------:|---------:| | TestMD5 | .NET 4.7.2 | .NET 4.7.2 | 4.119 USA | 0,0804 USA | 0,1045 USA | 3,958 USA | 4.318 USA | 4.123 USA | | TestSHA1 | .NET 4.7.2 | .NET 4.7.2 | 4.043 USA | 0,0793 USA | 0,1085 USA | 3,926 USA | 4.289 USA | 4.003 USA | | TestMD5 | .NET Core 3.1 | .NET Core 3.1 | 1,216 USA | 0,0122 USA | 0,0114 USA | 1.202 USA | 1.238 USA | 1.214 USA | | TestSHA1 | .NET Core 3.1 | .NET Core 3.1 | 1.307 USA | 0,0186 USA | 0,0165 USA | 1.284 USA | 1.336 USA | 1.307 USA |
* Vihjed * Erandid TestContext.TestSHA1: .NET 4.7.2 -> 1 äärmus eemaldati (5.52 us) TestContext.TestSHA1: .NET Core 3.1 -> 1 erand eemaldati (1.37 us)
* Legendid * Keskmine: Kõigi mõõtmiste aritmeetiline keskmine Viga: pool 99,9% usaldusvahemikust StdDev: Kõigi mõõtmiste standardhälve Min : Miinimum Max : Maksimum Mediaan: Väärtus, mis eraldab kõigi mõõtmiste ülemise poole (50. protsentiil) 1 meie: 1 mikrosekund (0,000001 sek)
***** BenchmarkRunner: ***** lõpp ** Jäi 0 võrdluspunkti jooksmiseks ** Kestus: 00:01:14 (74 sek), täidetud testid: 4
Globaalne koguaeg: 00:01:20 (80,63 sek), täidetud benchmarkid: 4 * Artefaktide koristamine * Pärast käivitamist salvestatakse testitulemused meie projekti \BenchmarkTest\bin\Release\netcoreapp3.1\BenchmarkDotNet.Artifacts\results kausta csv, html, md ja muudes formaatides.
Märkus:SimpleJob sihtkaadri valik on vale ja ei pruugi korrektselt toimidaJärgmiselt:
Paralleelses ei õnnestunud ehitada, vahetasin järjestikuse ehituse vastu
Ressursse:Hüperlingi sisselogimine on nähtav.
|