Compartir a través de


Análisis de datos de BenchmarkDotNet en Visual Studio

Puede utilizar las herramientas de generación de perfiles para recopilar y ver datos de BenchmarkDotNet en Visual Studio.

Al agregar una herramienta de diagnóstico BenchmarkDotNet a las clases de punto de referencia como atributo, se genera un archivo .diagsession una vez que se ejecute el punto de referencia. A continuación, puede abrir el archivo .diagsession en Visual Studio y ver los datos de generación de perfiles de los puntos de referencia.

Se admiten las siguientes herramientas de diagnóstico:

  • CPUUsageDiagnoser
  • DatabaseDiagnoser
  • DotNetCountersDiagnoser
  • EventsDiagnoser
  • FileIODiagnoser

Cada herramienta de diagnóstico genera datos de rendimiento relacionados con dicha herramienta. Por ejemplo, CPUUsageDiagnoser genera un archivo .diagsession con datos de CPU en él y DatabaseDiagnoser genera un archivo .diagsession con datos en las operaciones de base de datos. Las limitaciones corresponden a la herramienta de generación de perfiles asociada. Por ejemplo, la herramienta Base de datos del generador de perfiles funciona en ADO.NET o Entity Framework Core.

Requisitos previos

Recopilación de datos de Benchmark.NET

  1. Creación de un proyecto de consola

    Las funciones de punto de referencia se deben agregar a una aplicación de consola de .NET. Pueden ser funciones contenedoras que hacen referencia a otros tipos de proyecto.

  2. Establezca la compilación en una compilación de versión en lugar de una compilación de depuración.

  3. Atribuya el código para las herramientas de diagnóstico y los puntos de referencia e incluya código para ejecutar los puntos de referencia (BenchmarkRunner.Run).

    Agregue el nombre de la herramienta de diagnóstico como atributo a la clase que contenga los puntos de referencia para los que quiera generar datos.

    Por ejemplo, puede utilizar el código siguiente para CPUUsageDiagnoser.

    using System;
    using System.Security.Cryptography;
    using BenchmarkDotNet.Attributes;
    using BenchmarkDotNet.Running;
    using Microsoft.VSDiagnostics;
    
    namespace MyBenchmarks
    {
        [CPUUsageDiagnoser]
        public class Md5VsSha256
        {
            private const int N = 10000;
            private readonly byte[] data;
    
            private readonly SHA256 sha256 = SHA256.Create();
            private readonly MD5 md5 = MD5.Create();
    
            public Md5VsSha256()
            {
                data = new byte[N];
                new Random(42).NextBytes(data);
            }
    
            [Benchmark]
            public byte[] Sha256() => sha256.ComputeHash(data);
    
            [Benchmark]
            public byte[] Md5() => md5.ComputeHash(data);
        }
    
        public class Program
        {
            public static void Main(string[] args)
            {
                var summary = BenchmarkRunner.Run(typeof(Program).Assembly);
            }
        }
    }
    
  4. Ejecute la aplicación para generar el archivo .diagsession.

    Compruebe la salida de la consola para obtener la ubicación del archivo. Por ejemplo:

    // * Diagnostic Output - VSDiagnosticsDiagnoser * 
    Collection result moved to 'BenchmarkDotNet_Md5VsSha256_20231218_123326.diagsession'.
    Session : {7f38bcc2-c692-4266-aa24-b12bc5325ea4}
      Stopped
    Exported diagsession file: *.diagsession
    

Ver datos de .NET de punto de referencia

  1. En Visual Studio, seleccione Archivo > Abrir > Archivo; vaya a la ubicación del archivo .diagsession y, a continuación, seleccione y abra el archivo.

  2. Seleccione la pestaña Benchmark (Punto de referencia) para ver los datos de BenchmarkDotNet.

    Captura de pantalla de los datos de BenchmarkDotNet en Visual Studio.

Para más información sobre los resultados, consulte la documentación sobre BenchmarkDotNet.