Požadavky: Ve vývojovém procesu mohou stejné dvě metody funkcí splnit naše požadavky, ale z hlediska výkonu vybereme nejlepší výkonnostní metodu volání, jak otestovat výkon kódu?
Benchmarking výkonu může programátorům pomoci porovnat výkon dvou úryvků kódu nebo metod, což může poskytnout dobrý kvantifikační standard pro přepis nebo refaktoring kódu. Bez výkonnostních benchmarků je těžké si představit, jak můžete pouhým okem poznat rozdíl ve výkonu, když změníte metodu A na metodu B.
BenchmarkDotNet je výkonná knihovna pro benchmarky výkonu .Net na oficiálních stránkáchPřihlášení k hypertextovému odkazu je viditelné.
Nejprve vytvoříme nový konzolový projekt pro .NET Core 3.1. Název projektu je: BenchmarkTest
Nainstalujte BenchmarkDotNet pomocí příkazu nuget, kód je následující:
Dvojitým kliknutím na projekt upravte cílovou platformu projektu, a to následovně:
Testujeme výkon metod TestMD5 a TestSHA1 pod frameworky .NET Framework 4.7.2 a .NET Core 3.1.
Kód je následující:
Pokuste se ji spustit s následující chybou:
Ověřování benchmarků: Assembly BenchmarkTest, který definuje benchmarky, není optimalizovaný Benchmark byl vytvořen bez povolené optimalizace (pravděpodobně v konfiguraci DEBUG). Prosím, postavte to v RELEASE. Pokud chcete ladit benchmarky, podívejte se prosímPřihlášení k hypertextovému odkazu je viditelné.
Přepněte projekt do režimu RELEASEPro znovuzahájení projektu, jak je uvedeno níže:
* Shrnutí *
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18363.1379 (1909/listopad 2018Update/19H2) Intel Core i5-8259U CPU 2,30 GHz (Coffee Lake), 1 CPU, 8 logických a 4 fyzická jádra .NET Core SDK=5.0.103 [Hostitel] : .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 | Práce | Runtime | Mean | Chyba | StdDev | Min | Max | Medián | |--------- |-------------- |-------------- |---------:|----------:|----------:|---------:|---------:|---------:| | TestMD5 | .NET 4.7.2 | .NET 4.7.2 | 4.119 US | 0,0804 us | 0,1045 US | 3,958 US | 4.318 US | 4.123 US | | TestSHA1 | .NET 4.7.2 | .NET 4.7.2 | 4.043 US | 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 US | 1.307 US |
* Nápovědy * Odlehlé hodnoty TestContext.TestSHA1: .NET 4.7.2 -> 1 odlehlý profil byl odstraněn (5.52 us) TestContext.TestSHA1: .NET Core 3.1 -> 1 odlehlá hodnota byla odstraněna (1.37 us)
* Legendy * Průměr : Aritmetický průměr všech měření Chyba: polovina z 99,9% intervalu spolehlivosti StdDev : Směrodatná odchylka všech měření Min : Minimum Max : Maximum Medián: Hodnota oddělující horní polovinu všech měření (50. percentil) 1 us : 1 mikrosekunda (0,000001 sekundy)
***** BenchmarkRunner: Konec ***** ** Zůstalo 0 benchmarků k provedení ** Délka běhu: 00:01:14 (74 sekund), provedené benchmarky: 4
Celkový globální čas: 00:01:20 (80,63 s), provedené benchmarky: 4 * Úklid artefaktů * Po spuštění jsou výsledky testu uloženy do naší složky projekt \BenchmarkTest\bin\Release\netcoreapp3.1\BenchmarkDotNet.Artifacts\results, v csv, html, md a dalších formátech.
Poznámka:Výběr cílových rámců v SimpleJobu je nesprávný a nemusí se správně vykonávatNásledovně:
Nepodařilo se mi stavět paralelně, přecházím na sekvenční sestavení
Prostředky:Přihlášení k hypertextovému odkazu je viditelné.
|