Prasības: Izstrādes procesā tās pašas divas funkciju metodes var atbilst mūsu prasībām, bet veiktspējas apsvērumu dēļ mēs izvēlēsimies labāko zvanīšanas veiktspējas metodi, kā pārbaudīt koda veiktspēju?
Veiktspējas salīdzinošā novērtēšana var palīdzēt programmētājiem salīdzināt divu koda fragmentu vai metožu veiktspēju, kas var nodrošināt labu kvantitatīvas noteikšanas standartu koda pārrakstīšanai vai pārveidošanai. Bez veiktspējas etaloniem ir grūti iedomāties, kā jūs varat noteikt veiktspējas atšķirību ar neapbruņotu aci, mainot A metodi uz B metodi.
BenchmarkDotNet ir jaudīga .Net veiktspējas etalonu bibliotēka oficiālajā vietnēHipersaites pieteikšanās ir redzama.
Vispirms mēs izveidosim jaunu .NET Core 3.1 konsoles projektu. Projekta nosaukums ir: BenchmarkTest
Instalējiet BenchmarkDotNet, izmantojot komandu nuget, kods ir šāds:
Veiciet dubultklikšķi uz projekta, lai modificētu projekta mērķa platformu, kā norādīts tālāk.
Mēs pārbaudām TestMD5 un TestSHA1 metožu veiktspēju attiecīgi .NET Framework 4.7.2 un .NET Core 3.1 ietvaros.
Kods ir šāds:
Mēģiniet to izpildīt ar šādu kļūdu:
Etalonu apstiprināšana: Montāžas BenchmarkTest, kas definē etalonus, nav optimizēts Etalons tika izveidots bez iespējotas optimizācijas (visticamāk, DEBUG konfigurācija). Lūdzu, izveidojiet to RELEASE. Ja vēlaties atkļūdot etalonus, lūdzu, skatietHipersaites pieteikšanās ir redzama.
Pārslēgt projektu uz RELEASE režīmu, lai sāktu projektu no jauna, kā parādīts tālāk:
* Kopsavilkums *
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18363.1379 (1909/2018. gada novembrisAtjauninājums/19H2) Intel Core i5-8259U CPU 2.30GHz (Coffee Lake), 1 CPU, 8 loģiskie un 4 fiziskie kodoli .NET Core SDK=5.0.103 [Resursdators] : .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
| Metode | Darbs | Izpildlaiks | Vidējais | Kļūda | StdDev | Min | Maks | Mediāna | |--------- |-------------- |-------------- |---------:|----------:|----------:|---------:|---------:|---------:| | TestMD5 | .NET 4.7.2 | .NET 4.7.2 | 4.119 ASV | 0,0804 ASV | 0,1045 ASV | 3.958 ASV | 4.318 ASV | 4.123 ASV | | TestsSHA1 | .NET 4.7.2 | .NET 4.7.2 | 4.043 ASV | 0,0793 ASV | 0,1085 ASV | 3.926 ASV | 4.289 ASV | 4.003 ASV | | TestMD5 | .NET Core 3.1 | .NET Core 3.1 | 1.216 ASV | 0,0122 ASV | 0,0114 ASV | 1.202 ASV | 1.238 ASV | 1.214 ASV | | TestSHA1 | .NET Core 3.1 | .NET Core 3.1 | 1.307 ASV | 0,0186 ASV | 0,0165 ASV | 1.284 ASV | 1.336 ASV | 1.307 ASV |
* Padomi * Izvirzītie rādītāji TestContext.TestSHA1: .NET 4.7.2 -> 1 izņēmums tika noņemts (5.52 us) TestContext.TestSHA1: .NET Core 3.1 -> 1 izņēmums tika noņemts (1.37 us)
* Leģendas * Vidējais : visu mērījumu vidējais aritmētiskais Kļūda : puse no 99,9% ticamības intervāla StdDev : visu mērījumu standartnovirze Min : Minimālais Maks. : Maksimālais Mediāna : Vērtība, kas atdala visu mērījumu augšējo pusi (50. procentile) 1 us: 1 mikrosekunde (0.000001 sek.)
***** BenchmarkRunner: beigu ***** ** Palika 0 etalons(-i), kas jāizpilda ** Izpildes laiks: 00:01:14 (74 sek.), izpildītie etaloni: 4
Kopējais laiks pasaulē: 00:01:20 (80.63 sek.), izpildītie etaloni: 4 * Artefaktu tīrīšana * Pēc izpildes testa rezultāti tiek saglabāti mūsu projektā \BenchmarkTest\bin\Release\netcoreapp3.1\BenchmarkDotNet.Artifacts\results mapē csv, html, md un citos formātos.
Piezīme:SimpleJob mērķa rāmja izvēle ir nepareiza un var netikt izpildīta pareiziŠādi:
Neizdevās izveidot paralēli, pārejot uz secīgu būvēšanu
Resursu:Hipersaites pieteikšanās ir redzama.
|