Repolode
dotnet

dotnet/BenchmarkDotNet

Biblioteca .NET que convierte métodos de C# en benchmarks reproducibles, con calentamiento automático, estadísticas e informes de resultados.

Estrellas
11,526
Forks
1,080
Issues abiertos
168
Último commit
hace 18 horas

¿Qué es?

BenchmarkDotNet permite convertir métodos comunes en benchmarks mediante atributos, con un estilo similar al de las pruebas unitarias. La biblioteca se encarga de aspectos que es fácil gestionar mal manualmente, como las ejecuciones piloto, el calentamiento y las iteraciones de medición, la protección frente a la eliminación de código muerto y las comprobaciones del entorno, que advierten si hay un depurador conectado, si se trata de una compilación DEBUG o si el host está virtualizado.

Los benchmarks se pueden parametrizar con [Params], comparar con una referencia y ejecutar en varios runtimes, como .NET Framework, .NET Core, .NET 5+, Mono y NativeAOT. Los resultados se muestran en una tabla resumen con estadísticas como Mean, Error y StdDev, y se pueden exportar a Markdown, HTML, CSV, XML, JSON y gráficos. También admite diagnósticos de memoria y listados de desensamblado.

BenchmarkDotNet funciona en Windows, Linux y macOS, y admite C#, F# y Visual Basic. Entre las arquitecturas compatibles se incluyen x86, x64, ARM, ARM64, Wasm y LoongArch64.

Funciones clave

  • 01Convertir métodos en benchmarks con atributos como [Benchmark] y [Params].
  • 02Gestionar automáticamente las ejecuciones piloto, el calentamiento y el número de iteraciones según las estadísticas.
  • 03Comparar benchmarks con una referencia y ejecutarlos en varios runtimes de .NET.
  • 04Exportar resultados a Markdown, HTML, CSV, JSON y gráficos.
  • 05Medir las asignaciones de memoria administrada y nativa, y consultar listados de desensamblado.

Casos de uso

  • Medir si un cambio de código en una ruta crítica de un servicio .NET realmente mejora el rendimiento.
  • Comparar algoritmos alternativos o APIs de bibliotecas, como funciones de hash, en distintos runtimes.
  • Comprobar regresiones de rendimiento entre versiones de .NET o en compilaciones de NativeAOT.
  • Compartir con el equipo experimentos de rendimiento reproducibles en un formato de informe estándar.

Inicio rápido

  1. 1

    Crea una aplicación de consola de .NET y añade el paquete NuGet BenchmarkDotNet

  2. 2

    Marca los métodos de una clase con [Benchmark] y ejecuta los benchmarks desde el punto de entrada de la aplicación de consola

Antes de usarlo

  • Los benchmarks deben ejecutarse desde una aplicación de consola; no se admiten otros tipos de aplicaciones.
  • BenchmarkDotNet no sustituye el conocimiento sobre cómo diseñar buenos benchmarks, y los resultados deben interpretarse con cuidado.

Temas

Preguntas frecuentes

¿Qué es BenchmarkDotNet?
Biblioteca .NET que convierte métodos de C# en benchmarks reproducibles, con calentamiento automático, estadísticas e informes de resultados. BenchmarkDotNet permite convertir métodos comunes en benchmarks mediante atributos, con un estilo similar al de las pruebas unitarias. La biblioteca se encarga de aspectos que es fácil gestionar mal manualmente, como las ejecuciones piloto, el calentamiento y las iteraciones de medición, la protección frente a la eliminación de código muerto y las comprobaciones del entorno, que advierten si hay un depurador conectado, si se trata de una compilación DEBUG o si el host está virtualizado.
¿BenchmarkDotNet es gratuito? ¿Qué licencia tiene?
BenchmarkDotNet es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿BenchmarkDotNet sigue mantenido?
Mantenimiento activo. El último commit de BenchmarkDotNet fue el 6 nov 2026.
¿Para qué puedo usar BenchmarkDotNet?
Medir si un cambio de código en una ruta crítica de un servicio .NET realmente mejora el rendimiento. Comparar algoritmos alternativos o APIs de bibliotecas, como funciones de hash, en distintos runtimes. Comprobar regresiones de rendimiento entre versiones de .NET o en compilaciones de NativeAOT. Compartir con el equipo experimentos de rendimiento reproducibles en un formato de informe estándar.
¿Cómo se instala BenchmarkDotNet?
Crea una aplicación de consola de .NET y añade el paquete NuGet BenchmarkDotNet Marca los métodos de una clase con [Benchmark] y ejecuta los benchmarks desde el punto de entrada de la aplicación de consola
¿Dónde consigo BenchmarkDotNet?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/dotnet/BenchmarkDotNet

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados