Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 33025|Resposta: 2

[Comunicação] .NET/C# usa BenchmarkDotNet para testar o desempenho do código

[Copiar link]
Publicado em 03/03/2021 15:51:12 | | | |
Requisitos: No processo de desenvolvimento, os mesmos dois métodos funcionais podem atender aos nossos requisitos, mas por razões de desempenho, escolheremos o melhor método de desempenho para chamar como testar o desempenho do código?

Benchmarking de desempenho pode ajudar programadores a comparar o desempenho de dois trechos de código ou métodos, o que pode fornecer um bom padrão de quantificação para reescrita ou refatoração de código. Sem benchmarks de desempenho, é difícil imaginar como você consegue perceber a diferença de desempenho a olho nu ao trocar o método A para o método B.

BenchmarkDotNet é uma poderosa biblioteca de benchmarks de desempenho .Net no site oficialO login do hiperlink está visível.

Primeiro, vamos criar um novo projeto de console .NET Core 3.1. O nome do projeto é: BenchmarkTest

Instale o BenchmarkDotNet usando o comando nuget, o código é o seguinte:


Clique duas vezes no projeto para modificar a plataforma alvo do projeto, da seguinte forma:


Testamos o desempenho dos métodos TestMD5 e TestSHA1 sob os frameworks .NET Framework 4.7.2 e .NET Core 3.1, respectivamente.

O código é o seguinte:


Tente executá-lo com o seguinte erro:

Validando benchmarks:
Assembly BenchmarkTest, que define benchmarks, não é otimizado
O benchmark foi construído sem otimização ativada (provavelmente uma configuração DEBUG). Por favor, construa isso no RELEASE.
Se você quiser depurar os benchmarks, por favor, vejaO login do hiperlink está visível.

Mudar o projeto para o modo LANÇAMENTOPara recomeçar o projeto, como mostrado abaixo:


* Resumo *

BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18363.1379 (1909/Novembro2018Atualização/19H2)
Intel Core i5-8259U CPU 2.30GHz (Coffee Lake), 1 CPU, 8 núcleos lógicos e 4 físicos
.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


|   Método |           Job |       Duração |     Média |     Erro |    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 EUA | 4.003 US |
|  TestMD5 | .NET Core 3.1 | .NET Core 3.1 | 1.216 US | 0,0122 us | 0.0114 us | 1.202 EUA | 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 |

* Dicas *
Casos atípicos
  TestContext.TestSHA1: .NET 4.7.2 -> 1 outlier foi removido (5.52 us)
  TestContext.TestSHA1: .NET Core 3.1 -> 1 outlier foi removido (1.37 us)

* Lendas *
  Média: Média aritmética de todas as medições
  Erro: Metade do intervalo de confiança de 99,9%
  StdDev: Desvio padrão de todas as medições
  Mínimo: Mínimo
  Max: Máximo
  Mediana: Valor separando a metade superior de todas as medições (percentil 50)
  1 EUA : 1 microsegundo (0,000001 seg)

***** BenchmarkRunner: Fim *****
** Permaneceu 0(s) benchmark(s) para rodar **
Tempo de execução: 00:01:14 (74 seg), benchmarks executados: 4

Tempo total global: 00:01:20 (80,63 seg), benchmarks executados: 4
* Limpeza de artefatos *
Uma vez executados, os resultados do teste são salvos em nosso projeto \BenchmarkTest\bin\Release\netcoreapp3.1\BenchmarkDotNet.Artefacts\results, na pasta csv, html, md e outros formatos.



Nota:A seleção de frame-alvo do SimpleJob está incorreta e pode não ser executada corretamenteComo segue:

Falhei em construir no modo Paralelo, mudando para build sequencial


Recursos:O login do hiperlink está visível.




Anterior:Além da Solução Compare para o erro "Esta chave de autorização foi revogada"
Próximo:Chamadas Java para o servidor de serviço web C# não reconhecem o valor do cabeçalho HTTP SOAPAction
 Senhorio| Publicado em 31/03/2022 15:56:47 |
1. Tradução da média: média, geralmente se refere à média aritmética ou média geométrica.

Narrativa: Some todos os valores de um conjunto de sequências e divida pelo número total, que é a média.

2. Tradução mediana: valor intermediário.

Narrativa: Organize um conjunto de sequências em ordem crescente e depois tome o valor do meio, que é o valor do meio.
 Senhorio| Publicado em 25/05/2023 20:13:33 |
.NET/C# usa Span para lidar com strings de alto desempenho
https://www.itsvse.com/thread-10596-1-1.html
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com