Testes de performance em .NET: um exemplo comparando Entity Framework e Dapper

Renato Groffe
2 min readNov 7, 2023

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):

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:

Clique nesta imagem para visualizar com uma melhor resolução

--

--

Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker