Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 33025|Odpověď: 2

[Komunikace] .NET/C# používá BenchmarkDotNet k testování výkonu kódu

[Kopírovat odkaz]
Zveřejněno 03.03.2021 15:51:12 | | | |
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é.




Předchozí:Beyond Compare Řešení chyby "Tento autorizační klíč byl zrušen"
Další:Java volání na serveru webové služby C# nedokáže rozpoznat hodnotu HTTP hlavičky SOAPAction
 Pronajímatel| Zveřejněno 31.03.2022 15:56:47 |
1. Průměrný překlad: průměr, obvykle označuje aritmetický průměr nebo geometrický průměr.

Narativní: Sečtěte všechny hodnoty v sadě posloupností a vydělte celkovým číslem, což je průměr.

2. Medián translace: mezihodnota.

Narativní: Uspořádejte sadu sekvencí vzestupně a poté vezměte střední hodnotu, což je střední hodnota.
 Pronajímatel| Zveřejněno 25.05.2023 20:13:33 |
.NET/C# používá Span pro zpracování řetězců s vysokým výkonem
https://www.itsvse.com/thread-10596-1-1.html
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com