Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 33025|Svar: 2

[Kommunikation] .NET/C# använder BenchmarkDotNet för att testa kodprestanda

[Kopiera länk]
Publicerad på 2021-03-03 15:51:12 | | | |
Krav: I utvecklingsprocessen kan samma två funktionsmetoder uppfylla våra krav, men av prestandaskäl väljer vi den bästa prestandametoden för anrop, hur testar vi kodens prestanda?

Prestandabenchmarking kan hjälpa programmerare att jämföra prestandan hos två kodsniptar eller metoder, vilket kan ge en bra kvantifieringsstandard för kodomskrivning eller refaktorering. Utan prestandabenchmarks är det svårt att föreställa sig hur man kan se skillnad i prestanda med blotta ögat när man byter metod A till metod B.

BenchmarkDotNet är ett kraftfullt .Net-prestandabenchmarkbibliotek på den officiella webbplatsenInloggningen med hyperlänken är synlig.

Först skapar vi ett nytt .NET Core 3.1-konsolprojekt. Projektets namn är: BenchmarkTest

Installera BenchmarkDotNet med nuget-kommandot, koden är följande:


Dubbelklicka på projektet för att ändra projektets målplattform, enligt följande:


Vi testar prestandan hos TestMD5- och TestSHA1-metoderna under .NET Framework 4.7.2 respektive .NET Core 3.1-ramverken.

Koden är följande:


Försök att köra det med följande fel:

Validering av riktmärken:
Assembly BenchmarkTest, som definierar benchmarks, är icke-optimerad
Benchmark byggdes utan optimering aktiverad (troligen en DEBUG-konfiguration). Snälla, bygg det i RELEASE.
Om du vill felsöka benchmarkarna, se gärnaInloggningen med hyperlänken är synlig.

Byt projektet till RELEASE-lägeför att starta projektet igen, som visas nedan:


* Sammanfattning *

BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18363.1379 (1909/november 2018Uppdatering/19H2)
Intel Core i5-8259U CPU 2,30GHz (Coffee Lake), 1 CPU, 8 logiska och 4 fysiska kärnor
.NET Core SDK=5.0.103
  [Värd] : .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


|   Metod |           Jobb |       Speltid |     Mean |     Fel |    StdDev |      Min |      Max |   Median |
|--------- |-------------- |-------------- |---------:|----------:|----------:|---------:|---------:|---------:|
|  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 USA | 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 |

* Ledtrådar *
Avvikare
  TestContext.TestSHA1: .NET 4.7.2 -> 1 avvikare togs bort (5,52 us)
  TestContext.TestSHA1: .NET Core 3.1 -> 1 avvikare togs bort (1.37 us)

* Legender *
  Medelvärde: Aritmetiskt medelvärde av alla mätningar
  Fel: Hälften av 99,9 % konfidensintervall
  StdDev: Standardavvikelse för alla mått
  Min : Minimum
  Max: Maximum
  Median: Värde som skiljer den övre halvan av alla mätningar (50:e percentilen)
  1 us: 1 mikrosekund (0,000001 sek)

***** BenchmarkRunner: Slut *****
** Fanns kvar 0 benchmark(ar) att köra **
Körtid: 00:01:14 (74 sek), utförda benchmarks: 4

Total global tid: 00:01:20 (80,63 sek), genomförda benchmarks: 4
* Rensning av föremål *
När testresultaten är körda sparas de i vår projektmapp \BenchmarkTest\bin\Release\netcoreapp3.1\BenchmarkDotNet.Artifacts\results, i csv-, html-, md- och andra format.



Not:Val av SimpleJob-målram är felaktigt och kan inte köras korrektFöljande följer:

Misslyckades med att bygga parallellt, bytte till sekventiell version


Resurser:Inloggningen med hyperlänken är synlig.




Föregående:Beyond Compare Lösning på felet "Denna auktoriseringsnyckel har återkallats"
Nästa:Java-anrop till C#-webbtjänstservern kan inte känna igen värdet på HTTP-headern SOAPAction
 Hyresvärd| Publicerad på 2022-03-31 15:56:47 |
1. Medeltranslation: medel, syftar vanligtvis på det aritmetiska medelvärdet, eller geometriska medelvärdet.

Berättar: Summera alla värden i en uppsättning sekvenser och dela med det totala talet, vilket är medelvärdet.

2. Medianöversättning: mellanvärde.

Berättande: Arrangera en uppsättning sekvenser i stigande ordning och ta sedan mittvärdet, vilket är mittvärdet.
 Hyresvärd| Publicerad på 2023-05-25 20:13:33 |
.NET/C# använder Span för att hantera strängar med hög prestanda
https://www.itsvse.com/thread-10596-1-1.html
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com