Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 33025|Odpowiedź: 2

[Komunikacja] .NET/C# wykorzystuje BenchmarkDotNet do testowania wydajności kodu

[Skopiuj link]
Opublikowano 03.03.2021 15:51:12 | | | |
Wymagania: W procesie tworzenia te same dwie metody funkcji mogą spełnić nasze wymagania, ale ze względów wydajnościowych wybierzemy najlepszą metodę wywołania wydajności, jak przetestować wydajność kodu?

Benchmarking wydajności może pomóc programistom porównać wydajność dwóch fragmentów kodu lub metod, co stanowi dobry standard ilościowy dla przepisywania lub refaktoryzacji kodu. Bez benchmarków wydajności trudno sobie wyobrazić, jak można rozpoznać różnicę gołym okiem, zmieniając metodę A na metodę B.

BenchmarkDotNet to potężna biblioteka benchmarków wydajności .Net dostępna na oficjalnej stronie internetowejLogowanie do linku jest widoczne.

Najpierw stworzymy nowy projekt konsolowy .NET Core 3.1. Nazwa projektu to: BenchmarkTest

Zainstaluj BenchmarkDotNet za pomocą polecenia nuget, kod jest następujący:


Kliknij dwukrotnie projekt, aby zmodyfikować docelową platformę projektu, w następujący sposób:


Testujemy wydajność metod TestMD5 i TestSHA1 odpowiednio w ramach .NET Framework 4.7.2 i .NET Core 3.1.

Kod jest następujący:


Spróbuj wykonać go z następującym błędem:

Weryfikacja benchmarków:
Assembly BenchmarkTest definiujący benchmarki jest nieoptymalizowany
Benchmark został zbudowany bez włączonej optymalizacji (najprawdopodobniej w konfiguracji DEBUG). Proszę, zbudujcie go w WYDANIU.
Jeśli chcesz debugować testy testowe, proszę zobaczyćLogowanie do linku jest widoczne.

Przełącz projekt na tryb RELEASEAby rozpocząć projekt od nowa, jak pokazano poniżej:


* Podsumowanie *

BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18363.1379 (1909/listopad 2018Update/19H2)
Intel Core i5-8259U CPU 2.30GHz (Coffee Lake), 1 procesor, 8 rdzeni logicznych i 4 rdzenie fizyczne
.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


|   Metoda |           Praca |       Czas działania |     Mean |     Błąd |    StdDev |      Min |      Max |   Mediana |
|--------- |-------------- |-------------- |---------:|----------:|----------:|---------:|---------:|---------:|
|  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 |

* Wskazówki *
Odstające
  TestContext.TestSHA1: .NET 4.7.2 -> usunięto 1 odstające (5.52 us)
  TestContext.TestSHA1: .NET Core 3.1 -> 1 odstawczy został usunięty (1.37 us)

* Legendy *
  Średnia : Średnia arytmetyczna wszystkich pomiarów
  Błąd: Połowa 99,9% przedziału ufności
  StdDev : Odchylenie standardowe wszystkich pomiarów
  Minimum: Minimum
  Maksymalnie: Maksimum
  Mediana: Wartość oddzielająca górną połowę wszystkich pomiarów (50. percentyl)
  1 us : 1 mikrosekunda (0,000001 sek)

***** BenchmarkRunner: Koniec *****
** Pozostało 0 punktów do uruchomienia **
Czas działania: 00:01:14 (74 sek), wykonane testy końcowe: 4

Globalny czas całkowity: 00:01:20 (80,63 s), wykonane testy końcowe: 4
* Sprzątanie artefaktów *
Po uruchomieniu wyniki testu są zapisywane w folderze projektu \BenchmarkTest\bin\Release\netcoreapp3.1\BenchmarkDotNet.Artifacts\results, w formatach csv, html, md i innych.



Nuta:Wybór ramek docelowych w SimpleJob jest nieprawidłowy i może nie być prawidłowo wykonywanyNastępujący sposób:

Nie udało się zbudować równolegle, więc przeszedłem na sekwencyjną budację


Zasoby:Logowanie do linku jest widoczne.




Poprzedni:Beyond Compare Rozwiązanie błędu "Ten klucz autoryzacyjny został cofnięty"
Następny:Wywołania Java do serwera usług C# nie rozpoznają wartości nagłówka HTTP SOAPAction
 Ziemianin| Opublikowano 31.03.2022 15:56:47 |
1. Translacja średnia: średnia, zwykle odnosi się do średniej arytmetycznej lub geometrycznej.

Narracyjne: Zsumuj wszystkie wartości w zestawie sekwencji i podziel przez całkowitą liczbę, która jest średnią.

2. Mediana translacji: wartość pośrednia.

Narracja: Ułóż zestaw sekwencji rosnąco, a następnie wybierz wartość środkową, która jest wartością środkową.
 Ziemianin| Opublikowano 25.05.2023 20:13:33 |
.NET/C# wykorzystuje Span do obsługi ciągów o wysokiej wydajności
https://www.itsvse.com/thread-10596-1-1.html
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com