Követelmények: A fejlesztési folyamatban ugyanazok a két függvény módszer képes megfelelni a követelményeinknek, de teljesítmény miatt a legjobb teljesítmény módszert választjuk ki a híváshoz, hogyan teszteljük a kód teljesítményét?
A teljesítménybenchmarking segíthet a programozóknak összehasonlítani két kódrészlet vagy módszer teljesítményét, ami jó mennyiségi szabványt nyújthat a kód újraírásához vagy refaktorálásához. Teljesítménymérföldek nélkül nehéz elképzelni, hogyan lehet szabad szemmel megkülönböztetni a teljesítményt, amikor az A módszert B módszerre váltod.
A BenchmarkDotNet egy hatékony .Net teljesítménymérő könyvtár a hivatalos weboldalonA hiperlink bejelentkezés látható.
Először egy új .NET Core 3.1 konzolprojektet fogunk létrehozni. A projekt neve: BenchmarkTest
Telepítsd a BenchmarkDotNet-et a nuget parancsral, a kód a következő:
Duplán kattints a projektre, hogy módosítsd a projekt célplatformját, az alábbiak szerint:
A TestMD5 és TestSHA1 módszerek teljesítményét a .NET Framework 4.7.2 és .NET Core 3.1 keretrendszereken vizsgáljuk.
A kódex a következő:
Próbáld meg végrehajtani a következő hibával:
Mérföldkés validálása: Az Assembly BenchmarkTest nem optimalizált A Benchmark optimalizálás nélkül készült (valószínűleg DEBUG konfiguráció volt). Kérlek, építsd fel RELEASE állapotban. Ha hibázni szeretnél a benchmarkokat, nézd megA hiperlink bejelentkezés látható.
Kapcsold át a projektet RELEASE módrahogy újra elkezdjük a projektet, ahogy az alábbiakban látható:
* Összefoglaló *
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18363.1379 (1909/november2018Update/19H2) Intel Core i5-8259U CPU 2.30GHz (Coffee Lake), 1 CPU, 8 logikai és 4 fizikai mag .NET Core SDK=5.0.103 [Gazda] : .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
| Módszer | Munka | Játékidő | Mean | Hiba | StdDev | Min | Max | Medián | |--------- |-------------- |-------------- |---------:|----------:|----------:|---------:|---------:|---------:| | TestMD5 | .NET 4.7.2 | .NET 4.7.2 | 4.119 USA | 0,0804 amerikai | 0,1045 amerikai | 3,958 amerikai | 4.318 amerikai | 4.123 US | | TestSHA1 | .NET 4.7.2 | .NET 4.7.2 | 4.043 amerikai | 0,0793 amerikai | 0,1085 amerikai | 3.926 amerikai | 4.289 amerikai | 4.003 amerikai | | TestMD5 | .NET Core 3.1 | .NET Core 3.1 | 1,216 amerikai | 0,0122 amerikai | 0,0114 amerikai | 1,202 amerikai | 1.238 amerikai | 1.214 amerikai | | TestSHA1 | .NET Core 3.1 | .NET Core 3.1 | 1.307 amerikai | 0,0186 amerikai | 0,0165 amerikai | 1,284 amerikai | 1.336 amerikai | 1.307 amerikai |
* Utalások * Kivételek TestContext.TestSHA1: .NET 4.7.2 -> 1 outlier eltávolítva (5.52 us) TestContext.TestSHA1: .NET Core 3.1 -> 1 outlier eltávolítva (1.37 us)
* Legendák * Átlag: Minden mérés aritmetikai átlaja Hiba: A 99,9%-os megbízhatósági intervallum fele StdDev: Minden mérés szabványszórája Min: Minimum Max: Maximum Medián: Az összes mérés felső felét (50. percentilis) elválasztó érték 1 mi: 1 mikroszekundum (0,000001 másodperc)
***** BenchmarkRunner: Vége ***** ** Maradt 0 mércéj(ek) a futásra ** Játékidő: 00:01:14 (74 másodperc), végrehajtott benchmarkok: 4
Globális összidő: 00:01:20 (80,63 másodperc), végrehajtott benchmarkok: 4 * Leletek takarítása * A teszteredményeket a projektünk \BenchmarkTest\bin\Release\netcoreapp3.1\BenchmarkDotNet.Artifacts\results mappába mentjük, csv, html, md és más formátumokban.
Jegyzet:A SimpleJob célkeret-választása helytelen, és nem feltétlenül hajt végre megfelelőenKövetkezőképpen:
Nem sikerült párhuzamos építkezni, átváltottam szekvenciális buildre
Erőforrások:A hiperlink bejelentkezés látható.
|