Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 33025|Antwoord: 2

[Communicatie] .NET/C# gebruikt BenchmarkDotNet om codeprestaties te testen

[Link kopiëren]
Geplaatst op 03-03-2021 15:51:12 | | | |
Eisen: In het ontwikkelproces kunnen dezelfde twee functiemethoden aan onze eisen voldoen, maar om prestatieredenen kiezen we de beste prestatiemethode voor het aanroepen, hoe testen we de prestaties van de code?

Performance benchmarking kan programmeurs helpen de prestaties van twee codefragmenten of methoden te vergelijken, wat een goede kwantificatiestandaard kan bieden voor codeherschrijven of refactoring. Zonder prestatiebenchmarks is het moeilijk voor te stellen hoe je met het blote oog het verschil in prestaties kunt zien wanneer je methode A naar methode B wisselt.

BenchmarkDotNet is een krachtige .Net-prestatiebenchmarkbibliotheek op de officiële websiteDe hyperlink-login is zichtbaar.

Eerst maken we een nieuw .NET Core 3.1 consoleproject. De projectnaam is: BenchmarkTest

Installeer BenchmarkDotNet met het nuget-commando, de code is als volgt:


Dubbelklik op het project om het doelplatform van het project aan te passen, als volgt:


We testen de prestaties van de TestMD5- en TestSHA1-methoden onder respectievelijk de .NET Framework 4.7.2 en .NET Core 3.1 frameworks.

De code is als volgt:


Probeer het uit te voeren met de volgende fout:

Benchmarks valideren:
Assembly BenchmarkTest, die benchmarks definieert, is niet-geoptimaliseerd
Benchmark is gebouwd zonder optimalisatie ingeschakeld (hoogstwaarschijnlijk een DEBUG-configuratie). Bouw het alsjeblieft in RELEASE.
Als je de benchmarks wilt debuggen, zie danDe hyperlink-login is zichtbaar.

Schakel het project over naar RELEASE-modusOm het project opnieuw te starten, zoals hieronder weergegeven:


* Samenvatting *

BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18363.1379 (1909/november 2018Update/19H2)
Intel Core i5-8259U CPU 2,30GHz (Coffee Lake), 1 CPU, 8 logische en 4 fysieke cores
.NET Core SDK=5.0.103
  [Host]: .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


|   Methode |           Baan |       Speeltijd |     Mean |     Fout |    StdDev |      Min |      Max |   Median |
|--------- |-------------- |-------------- |---------:|----------:|----------:|---------:|---------:|---------:|
|  TestMD5 |    .NET 4.7.2 |    .NET 4.7.2 | 4.119 VS | 0.0804 VS | 0.1045 VS | 3.958 VS | 4.318 VS | 4.123 VS |
| TestSHA1 |    .NET 4.7.2 |    .NET 4.7.2 | 4.043 VS | 0.0793 VS | 0.1085 VS | 3.926 VS | 4.289 VS | 4.003 VS |
|  TestMD5 | .NET Core 3.1 | .NET Core 3.1 | 1.216 VS | 0.0122 VS | 0.0114 VS | 1.202 VS | 1.238 VS | 1.214 VS |
| TestSHA1 | .NET Core 3.1 | .NET Core 3.1 | 1.307 VS | 0.0186 VS | 0.0165 VS | 1.284 VS | 1.336 VS | 1.307 VS |

* Hints *
Uitschieters
  TestContext.TestSHA1: .NET 4.7.2 -> 1 uitschieter is verwijderd (5,52 us)
  TestContext.TestSHA1: .NET Core 3.1 -> 1 uitschieter is verwijderd (1.37 us)

* Legendes *
  Gemiddelde : Rekenkundig gemiddelde van alle metingen
  Fout: Half van 99,9% betrouwbaarheidsinterval
  StdDev: Standaarddeviatie van alle metingen
  Min : Minimaal
  Max: Maximum
  Mediaan: Waarde die de bovenste helft van alle metingen scheidt (50e percentiel)
  1 us : 1 microseconde (0,0000001 sec)

***** BenchmarkRunner: Einde *****
** Er waren nog 0 benchmark(s) om te draaien **
Uitvoeringstijd: 00:01:14 (74 sec), uitgevoerde benchmarks: 4

Wereldwijde totale tijd: 00:01:20 (80,63 sec), uitgevoerde benchmarks: 4
* Opruimen van artefacten *
Eenmaal uitgevoerd worden de testresultaten opgeslagen in onze projectmap \BenchmarkTest\bin\Release\netcoreapp3.1\BenchmarkDotNet.Artifacts\results, in csv-, html-, md- en andere formaten.



Notitie:De keuze van SimpleJob target frame is onjuist en kan niet correct worden uitgevoerdAls volgt:

Niet in parallel gebouwd, overgestapt op sequentiële build


Weg:De hyperlink-login is zichtbaar.




Vorig:Beyond Compare Oplossing voor de foutmelding "Deze autorisatiesleutel is ingetrokken"
Volgend:Java-aanroepen naar de C#-webserviceserver herkennen de waarde van de HTTP-header SOAPAction niet
 Huisbaas| Geplaatst op 31-03-2022 15:56:47 |
1. Gemiddelde translatie: gemiddelde, verwijst meestal naar het rekenkundige gemiddelde, of geometrisch gemiddelde.

Verhaal: Tel alle waarden op in een reeks reeksen en deel door het totaalgetal, dat het gemiddelde is.

2. Mediaanvertaling: intermediane waarde.

Narratief: Rangschik een reeks reeksen in oplopende volgorde, en neem dan de middenwaarde, die de middelste waarde is.
 Huisbaas| Geplaatst op 25-05-2023 20:13:33 |
.NET/C# gebruikt Span om strings met hoge prestaties te verwerken
https://www.itsvse.com/thread-10596-1-1.html
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com