Skip to content

Repository files navigation

.NET 10 Object Mapper Benchmark: Mapperly vs AutoMapper vs Mapster

Un benchmark de rendimiento puro, crudo y directo diseñado para medir el costo real de CPU y Memoria al mapear objetos en .NET 10.

El objetivo de este repositorio es demostrar con datos empíricos por qué el uso de herramientas basadas en reflexión (como AutoMapper) es un lastre de rendimiento en aplicaciones modernas, frente a alternativas que utilizan Source Generators (como Mapperly).

Los Resultados

Las pruebas fueron ejecutadas con BenchmarkDotNet v0.15.8 en un entorno .NET 10.0. Los números no mienten: AutoMapper es casi 4 veces más lento que el mapeo manual, mientras que Mapperly supera en velocidad al propio código escrito a mano gracias a la optimización del compilador (Inlining).

Method Mean Error StdDev Min Max Op/s Ratio RatioSD Gen0 Allocated Alloc Ratio
MapeoManual 8.919 ns 0.1192 ns 0.1115 ns 8.814 ns 9.273 ns 112,120,884.9 1.00 0.02 0.0089 56 B 1.00
AutoMapper 35.193 ns 0.6264 ns 1.2796 ns 33.411 ns 41.649 ns 28,414,872.0 3.95 0.15 0.0089 56 B 1.00
Mapster 16.519 ns 0.2493 ns 0.2332 ns 16.168 ns 16.894 ns 60,537,109.6 1.85 0.03 0.0089 56 B 1.00
Mapperly 7.394 ns 0.0698 ns 0.0653 ns 7.274 ns 7.528 ns 135,242,581.9 0.83 0.01 0.0089 56 B 1.00

Nota: Todos los mappers asignan la misma cantidad de memoria (56 Bytes) para crear la instancia del DTO. El cuello de botella real está en el tiempo de CPU (nanosegundos).

Cómo replicar esta prueba

Si no crees en estos números, clona el repositorio y córrelo en tu propia máquina.

Regla de oro: Jamás ejecutes esto desde Visual Studio en modo Debug. Arruinarás las métricas.

  1. Abre tu terminal.
  2. Navega a la raíz del proyecto.
  3. Ejecuta el benchmark en modo Release:
dotnet run -c Release

Stack Tecnológico

  • C# 14 / .NET 10.0
  • BenchmarkDotNet v0.15.8
  • Riok.Mapperly v4.3.1
  • Mapster v10.0.3
  • AutoMapper v16.1.1

About

.NET 10 Object Mapper Benchmark: Mapperly vs AutoMapper vs Mapster

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages