Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 33025|Risposta: 2

[Comunicazione] .NET/C# utilizza BenchmarkDotNet per testare le prestazioni del codice

[Copiato link]
Pubblicato su 03/03/2021 15:51:12 | | | |
Requisiti: Nel processo di sviluppo, gli stessi due metodi di funzione possono soddisfare i nostri requisiti, ma per motivi di prestazione sceglieremo il metodo di performance migliore per chiamare, come testare le prestazioni del codice?

Il benchmarking delle prestazioni può aiutare i programmatori a confrontare le prestazioni di due frammenti di codice o metodi, il che può fornire un buon standard di quantificazione per la riscrittura o la rifattorizzazione del codice. Senza benchmark di prestazione, è difficile immaginare come si possa notare la differenza a occhio nudo quando si cambia il metodo A al metodo B.

BenchmarkDotNet è una potente libreria di benchmark di performance .Net sul sito ufficialeIl login del link ipertestuale è visibile.

Per prima cosa, creeremo un nuovo progetto console .NET Core 3.1. Il nome del progetto è: BenchmarkTest

Installa BenchmarkDotNet usando il comando nuget, il codice è il seguente:


Fai doppio clic sul progetto per modificare la piattaforma di destinazione del progetto, come segue:


Testiamo le prestazioni dei metodi TestMD5 e TestSHA1 rispettivamente nei framework .NET Framework 4.7.2 e .NET Core 3.1.

Il codice è il seguente:


Tenta di eseguirlo con il seguente errore:

Convalidazione dei benchmark:
Assembly BenchmarkTest, che definisce i benchmark, non è ottimizzato
Il benchmark è stato costruito senza ottimizzazione abilitata (molto probabilmente una configurazione DEBUG). Per favore, costruiscilo in RELEASE.
Se vuoi fare il debug dei benchmark, consultaIl login del link ipertestuale è visibile.

Passa il progetto in modalità RELEASEPer ricominciare il progetto, come mostrato di seguito:


* Riassunto *

BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18363.1379 (1909/novembre 2018Aggiornamento/19H2)
Intel Core i5-8259U CPU 2.30GHz (Coffee Lake), 1 CPU, 8 core logici e 4 core fisici
.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


|   Metodo |           Lavoro |       Durata |     Media |     Errore |    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 | 1.216 US | 0.0122 US | 0.0114 US | 1.202 US | 1.238 US | 1.214 US |
| TestSHA1 | .NET Core 3.1 | 1.307 US | 0.0186 US | 0.0165 US | 1.284 US | 1.336 US | 1.307 US |

* Suggerimenti *
Eccezioni
  TestContext.TestSHA1: .NET 4.7.2 -> 1 outlier è stato rimosso (5.52 us)
  TestContext.TestSHA1: .NET Core 3.1 -> 1 outlier è stato rimosso (1.37 us)

* Leggende *
  Media: media aritmetica di tutte le misure
  Errore: metà dell'intervallo di confidenza del 99,9%
  StdDev: deviazione standard di tutte le misurazioni
  Minimo: Minimo
  Max: Massimo
  Mediana: Valore che separa la metà superiore di tutte le misurazioni (50° percentile)
  1 US : 1 microsecondo (0,000001 seg)

***** BenchmarkRunner: Fine *****
** Rimaneva 0 benchmark da eseguire **
Durata di esecuzione: 00:01:14 (74 sec), benchmark eseguiti: 4

Tempo totale globale: 00:01:20 (80,63 sec), benchmark eseguiti: 4
* Pulizia manufatti *
Una volta eseguiti, i risultati del test vengono salvati nel nostro progetto \BenchmarkTest\bin\Release\netcoreapp3.1\BenchmarkDotNet.Artifacts\results, in csv, html, md e altri formati.



Nota:La selezione del frame target di SimpleJob è errata e potrebbe non essere eseguita correttamenteCome segue:

Non sono riuscito a compilare in parallelo, passando alla build sequenziale


Risorse:Il login del link ipertestuale è visibile.




Precedente:Oltre la soluzione di confronto all'errore "Questa chiave di autorizzazione è stata revocata"
Prossimo:Le chiamate Java al server webservice C# non riconoscono il valore dell'intestazione HTTP SOAPAction
 Padrone di casa| Pubblicato su 31/03/2022 15:56:47 |
1. Traduzione della media: media, di solito si riferisce alla media aritmetica, o media geometrica.

Narrazione: Sommare tutti i valori di un insieme di sequenze e dividere per il numero totale, che è la media.

2. Traduzione mediana: valore intermedio.

Narrazione: Ordina un insieme di sequenze in ordine crescente, poi prendi il valore centrale, che è il valore centrale.
 Padrone di casa| Pubblicato su 25/05/2023 20:13:33 |
.NET/C# utilizza Span per gestire stringhe ad alte prestazioni
https://www.itsvse.com/thread-10596-1-1.html
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com