Testes de performance em .NET: um exemplo comparando Entity Framework e Dapper
Em uma live recente no Canal .NET demonstrei o uso do BenchmarkDotNet, uma excelente alternativa para a implementação de testes de performance na plataforma .NET. O exemplo apresentado foi um comparativo entre o Entity Framework Core e o Dapper em .NET 7, a partir de um cenário de inclusão de registros em uma base do SQL Server e considerando um relacionamento 1:n entre tabelas (Empresas + Contatos).
Vale destacar que o BenchmarkDotNet é uma ferramenta utilizada com frequência pelo próprio time responsável pela evolução do .NET, em provas de conceito medindo a performance de funcionalidades a serem incorporadas em novos releases. Diversos projetos open source do ecossistema .NET também se valem do BenchmarkDotNet em variados tipos de testes medindo a performance das funcionalidades que implementam.
A gravação deste evento online está disponível no Youtube e pode ser assistida gratuitamente (clique neste link para assistir no ponto em que abordo o uso do BenchmarkDotNet):
Os 2 repositórios que criei para este exemplo foram disponibilizados no GitHub (clique nos links correspondentes para acessá-los):
- Projeto em .NET 7 com os testes de performance
- Pipeline do Azure DevOps para execução automatizada dos testes em Linux
Caso achem útil esta solução, peço por favor um ⭐️ nos repositórios do GitHub apoiando. Fica aqui também o convite para que vocês me sigam lá!
Na listagem a seguir temos os testes envolvendo a utilização do Dapper.Contrib (biblioteca que está baseada no Dapper e que simplifica operações de CRUD) e o Entity Framework Core 7.0:
Os resultados desses testes podem ser observados na imagem seguinte, em uma execução automatizada do pipeline criado para o Azure DevOps. Observamos aqui que o Entity Framework Core apresenta uma performance ligeiramente superior ao Dapper.Contrib, neste caso específico com operações de inclusão que envolvam registros-pai e filhos: