Vaatimukset: Kehitysprosessissa samat kaksi funktiomenetelmää voivat täyttää vaatimuksemme, mutta suorituskyvyn vuoksi valitsemme parhaan suorituskyvyn menetelmän kutsumiseen, miten testata koodin suorituskykyä?
Suorituskyvyn vertailu voi auttaa ohjelmoijia vertailemaan kahden koodipätkän tai metodin suorituskykyä, mikä voi tarjota hyvän kvantifiointistandardin koodin uudelleenkirjoittamiseen tai refaktorointiin. Ilman suorituskykymittareita on vaikea kuvitella, miten paljain silmin erottaa suorituskyvyn ero, kun vaihdat menetelmän A menetelmään B.
BenchmarkDotNet on tehokas .Net-suorituskyvyn vertailukirjasto virallisella verkkosivustollaHyperlinkin kirjautuminen on näkyvissä.
Ensiksi luomme uuden .NET Core 3.1 -konsoliprojektin. Projektin nimi on: BenchmarkTest
Asenna BenchmarkDotNet nuget-komennolla, koodi on seuraava:
Kaksoisklikkaa projektia muuttaaksesi projektin kohdealustaa seuraavasti:
Testaamme TestMD5- ja TestSHA1-menetelmien suorituskykyä .NET Framework 4.7.2 ja .NET Core 3.1 -kehysten mukaisesti.
Koodi on seuraava:
Yritä suorittaa se seuraavalla virheellä:
Vertailuarvojen validointi: Assembly BenchmarkTest, joka määrittelee benchmarkit, ei ole optimoitu Benchmark rakennettiin ilman optimointia (todennäköisesti DEBUG-konfiguraatio). Ole hyvä, rakenna se RELEASE-tilassa. Jos haluat debugata benchmarkit, katsoHyperlinkin kirjautuminen on näkyvissä.
Vaihda projekti RELEASE-tilaanaloittaakseen projektin uudelleen, kuten alla on esitetty:
* Yhteenveto *
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18363.1379 (1909/marraskuu2018Päivitys/19H2) Intel Core i5-8259U CPU 2.30GHz (Coffee Lake), 1 CPU, 8 loogista ja 4 fyysistä ydintä .NET Core SDK=5.0.103 [Isäntä]: .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
| Menetelmä | Työ | Kesto | Mean | Virhe | StdDev | Min | Max | Mediaani | |--------- |-------------- |-------------- |---------:|----------:|----------:|---------:|---------:|---------:| | TestMD5 | .NET 4.7.2 | .NET 4.7.2 | 4.119 meidät | 0,0804 US | 0,1045 US | 3,958 Yhdysvaltojaan | 4.318 US | 4.123 US | | TestSHA1 | .NET 4.7.2 | .NET 4.7.2 | 4.043 Yhdysvaltojaan | 0,0793 US | 0,1085 US | 3,926 US | 4.289 US | 4.003 Us | | TestMD5 | .NET Core 3.1 | .NET Core 3.1 | 1.216 US | 0,0122 US | 0,0114 US | 1.202 US | 1.238 US | 1,214 US | | TestSHA1 | .NET Core 3.1 | .NET Core 3.1 | 1.307 US | 0,0186 US | 0,0165 US | 1,284 US | 1.336 Yhdysvaltojaan | 1.307 US |
* Vihjeitä * Poikkeamat TestContext.TestSHA1: .NET 4.7.2 -> 1 poikkeama poistettiin (5.52 us) TestContext.TestSHA1: .NET Core 3.1 -> 1 poikkeama poistettiin (1.37 us)
* Legendat * Keskiarvo: Kaikkien mittausten aritmeettinen keskiarvo Virhe: Puolet 99,9 %:n luottamusvälistä StdDev: Kaikkien mittausten keskihajonta Min : Minimi Max: Maximum Mediaani: Arvo, joka erottaa kaikkien mittausten korkeamman puoliskon (50. prosenttipiste) 1 us: 1 mikrosekunti (0,000001 sekuntia)
***** BenchmarkRunner: Loppu ***** ** Jäljellä oli 0 vertailuarvoa jäljellä ** Kesto: 00:01:14 (74 s), suoritetut benchmarkit: 4
Globaali kokonaisaika: 00:01:20 (80,63 s), suoritetut benchmarkit: 4 * Esineiden siivous * Kun testi on suoritettu, tulokset tallennetaan projektiimme \BenchmarkTest\bin\Release\netcoreapp3.1\BenchmarkDotNet.Artifacts\resultss-kansioon csv-, html-, md- ja muissa formaateissa.
Muistiinpano:SimpleJob-kohdekehyksen valinta on virheellinen eikä välttämättä toimi oikeinSeuraavasti:
Epäonnistuin rinnakkaisrakentamisessa, vaihdoin peräkkäiseen buildiin
Varat:Hyperlinkin kirjautuminen on näkyvissä.
|