Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 33025|Atsakyti: 2

[Komunikatas] .NET/C# naudoja BenchmarkDotNet kodo našumui patikrinti

[Kopijuoti nuorodą]
Paskelbta 2021-03-03 15:51:12 | | | |
Reikalavimai: Kūrimo procese tie patys du funkcijų metodai gali atitikti mūsų reikalavimus, tačiau dėl našumo priežasčių parinksime geriausią skambinimo veikimo būdą, kaip patikrinti kodo veikimą?

Našumo lyginamoji analizė gali padėti programuotojams palyginti dviejų kodo fragmentų ar metodų našumą, o tai gali būti geras kodo perrašymo ar pertvarkymo kiekybinio įvertinimo standartas. Be našumo etalonų sunku įsivaizduoti, kaip plika akimi galite pastebėti našumo skirtumą, kai pakeičiate A metodą į B metodą.

"BenchmarkDotNet" yra galinga .Net našumo etalonų biblioteka oficialioje svetainėjeHipersaito prisijungimas matomas.

Pirmiausia sukursime naują .NET Core 3.1 konsolės projektą. Projekto pavadinimas yra: BenchmarkTest

Įdiekite "BenchmarkDotNet" naudodami komandą nuget, kodas yra toks:


Dukart spustelėkite projektą, kad modifikuotumėte projekto tikslinę platformą, kaip nurodyta toliau.


Testuojame TestMD5 ir TestSHA1 metodų našumą atitinkamai pagal .NET Framework 4.7.2 ir .NET Core 3.1 sistemas.

Kodas yra toks:


Pabandykite jį vykdyti su šia klaida:

Lyginamųjų indeksų patvirtinimas:
Surinkimo etalonų testas, apibrėžiantis etalonus, yra neoptimizuotas
Etalonas buvo sukurtas be įjungto optimizavimo (greičiausiai DEBUG konfigūracija). Prašome sukurti jį RELEASE.
Jei norite derinti etalonus, žr.Hipersaito prisijungimas matomas.

Perjunkite projektą į RELEASE režimąNorėdami pradėti projektą iš naujo, kaip parodyta toliau:


* Santrauka *

BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18363.1379 (1909/November2018Update/19H2)
Intel Core i5-8259U procesorius 2.30GHz (Coffee Lake), 1 procesorius, 8 loginiai ir 4 fiziniai branduoliai
.NET Core SDK = 5.0.103
  [Pagrindinis kompiuteris] : .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


|   Metodas |           Darbas |       Vykdymo laikas |     Vidurkis |     Klaida |    StdDev |      Minimalus |      Maks |   Mediana |
|--------- |-------------- |-------------- |---------:|----------:|----------:|---------:|---------:|---------:|
|  TestMD5 |    .NET 4.7.2 |    .NET 4.7.2 | 4.119 JAV | 0,0804 JAV | 0,1045 JAV | 3.958 JAV | 4.318 JAV | 4.123 JAV |
| TestasSHA1 |    .NET 4.7.2 |    .NET 4.7.2 | 4.043 JAV | 0,0793 JAV | 0,1085 JAV | 3.926 JAV | 4.289 JAV | 4.003 JAV |
|  TestMD5 | .NET Core 3.1 | .NET Core 3.1 | 1.216 JAV | 0,0122 JAV | 0,0114 JAV | 1.202 JAV | 1.238 JAV | 1.214 JAV |
| TestSHA1 | .NET Core 3.1 | .NET Core 3.1 | 1.307 JAV | 0,0186 JAV | 0,0165 JAV | 1.284 JAV | 1.336 JAV | 1.307 JAV |

* Patarimai *
Nuokrypiai
  TestContext.TestSHA1: .NET 4.7.2 -> 1 išskyra buvo pašalinta (5.52 us)
  TestContext.TestSHA1: .NET Core 3.1 -> 1 išskyra buvo pašalinta (1.37 us)

* Legendos *
  Vidurkis : visų matavimų aritmetinis vidurkis
  Klaida : pusė 99,9% pasikliautinojo intervalo
  StdDev : visų matavimų standartinis nuokrypis
  Min : Minimalus
  Maks : Maksimalus
  Mediana : vertė, skirianti viršutinę visų matavimų pusę (50-asis procentilis)
  1 us: 1 mikrosekundė (0,000001 sek.)

***** BenchmarkRunner: pabaigos *****
** Liko 0 etalonų paleisti **
Trukmė: 00:01:14 (74 sek.), įvykdyti etalonai: 4

Bendras pasaulinis laikas: 00:01:20 (80,63 sek.), įvykdyti etalonai: 4
* Artefaktų valymas *
Įvykdžius, testo rezultatai išsaugomi mūsų projekto \BenchmarkTest\bin\Release\netcoreapp3.1\BenchmarkDotNet.Artifacts\results aplanke, csv, html, md ir kitais formatais.



Nata:SimpleJob tikslinio kadro pasirinkimas neteisingas ir gali būti netinkamai vykdomasTaip:

Nepavyko sukurti lygiagrečiai, pereinant prie nuoseklios komponavimo


Išteklių:Hipersaito prisijungimas matomas.




Ankstesnis:Be palyginimo klaidos "Šis autorizacijos raktas buvo atšauktas" sprendimas
Kitą:"Java" iškvietimai į C# žiniatinklio paslaugų serverį neatpažįsta HTTP antraštės SOAPAction reikšmės
 Savininkas| Paskelbta 2022-03-31 15:56:47 |
1. Vidutinis vertimas: vidurkis, paprastai reiškia aritmetinį vidurkį arba geometrinį vidurkį.

Pasakojimas: sudėkite visas sekų rinkinio reikšmes ir padalinkite iš bendro skaičiaus, kuris yra vidurkis.

2. Vertimo mediana: tarpinė vertė.

Pasakojimas: išdėstykite sekų rinkinį didėjančia tvarka, tada paimkite vidurinę reikšmę, kuri yra vidutinė reikšmė.
 Savininkas| Paskelbta 2023-05-25 20:13:33 |
.NET/C# naudoja "Span", kad apdorotų didelio našumo eilutes
https://www.itsvse.com/thread-10596-1-1.html
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com