Teste de performance de aplicações .NET Core com BenchMarkDotNet

Alexandre Malavasi
Jan 30, 2018 · 3 min read

Ao dedicar tempo pesquisando referências para um outro artigo que estava escrevendo relacionando a AuthenticationType no Asp.Net, eu me deparei sem querer com algo que pra mim era extremamente novo: BenckmarkDotNet.

Eu já havia testado ao longo dos anos diversas ferramentas para verificação de performance e achei esta particularmente interessante por permitir que trechos de código sejam comparados quanto à performance, de forma extremamente simples, caso tenhamos dúvidas de qual forma de implementação é mais vantajosa em relação à utilização de recursos computacionais, rapidez e outros aspectos que se considerem relevantes. Isto permite melhores refatorações baseadas em métricas confiáveis.

O framework (se é que podemos assim denominá-lo) é uma iniciativa open-source da comunidade e está disponível no gihub no link abaixo:

Mas, vamos a um exemplo prático de sua utilização?

Exemplo prático

Para fins de demonstração prática, vamos criar uma aplicação simples do tipo Console Application no Visual Studio 2017:

Após isto vamos adicionar ao projeto uma classe simples para realização de operações matemáticas, contendo um método simples que calcula um determinado número por ele mesmo apenas para fins de exemplo:

Obs: por questões de simplificação para este exemplo, criei a classe no próprio arquivo Program.cs do projeto.

Há outras formas de implementar o método NumeroAoQuadrado como, por exemplo, utilizando Math.Pow. Sendo assim, vamos comparar a performance implementando o mesmo método das duas formas: multiplicando-se manualmente o número por ele mesmo e utilizando Math.Pow e analisaremos os resultados.

Para conseguirmos utilizar a biblioteca BenckmarkDotNet basta instalar o pacote correspondente via Nuget:

Após concluída a instalação é necessário referenciar a sua utilização nas diretivas, conforme código-fonte abaixo:

Para compararmos as duas formas de implementação, vamos criar um segundo método chamado NumeroAoQuadradoMathPow. Para os métodos que desejamos monitorar a performance, é necessário colocar a anotação “benchmark”, conforme código abaixo. Também vamos atribuir um valor 1000 para a propriedade Number, para fins de teste.

Por fim, vamos incluir o “sumary” exigido pela biblioteca de monitoramento, passando como parâmetro a classe que desejamos monitorar, conforme código abaixo.

E então temo o tão esperado teste de performance. Basta rodar a aplicação e aguardar o término da análise. Eis o resultado:

Como pode ser visto na imagem, o método com a implementação Math.Pow apresentou desempenho ligeiramente inferior à primeira implementação. Para sistemas mais complexos e críticos, que exigem altíssimo desempenho, a análise aprofundada método a método pode representar uma abordagem interessante e as métricas dão um resultado imparcial e baseado em fatos, evitando-se distorções ou falhas humanas no processo.

Além da exibição das métricas em Console, é possível carregar as informações de forma gráfica, mas cabe a demonstração de outros recursos mais avançados em outro artigo, pois este tem apenas carácter introdutório.

Como estamos todos sempre em fase de constante aprendizado, sugestões de melhoria no artigo ou contribuições são sempre muito bem-vindos.

Obrigado por ter lido este artigo até o final. Até mais.

Referências

Linkedin: https://www.linkedin.com/in/alexandremalavasi

Alexandre Malavasi

MCP | MCTS | MCPD | ITIL | .NET | MBA | MTAC | Technical Leader | Consultant | .NET Developer | Community Manager

Alexandre Malavasi

Written by

MCP | MCTS | MCPD | ITIL | .NET | MBA | MTAC | Technical Leader | Consultant | .NET Developer

Alexandre Malavasi

MCP | MCTS | MCPD | ITIL | .NET | MBA | MTAC | Technical Leader | Consultant | .NET Developer | Community Manager

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade