Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Puede usar las herramientas de generación de perfiles para recopilar y ver datos de BenchmarkDotNet en Visual Studio.
Al agregar un diagnóstico benchmarkDotNet a las clases de pruebas comparativas como atributo, se genera un archivo .diagsession después de que se ejecute la prueba comparativa. A continuación, puede abrir la .diagsession en Visual Studio y ver los datos de generación de perfiles de las pruebas comparativas.
Se admiten los siguientes diagnósticos:
- CPUUsageDiagnoser
- DatabaseDiagnoser
- DotNetCountersDiagnoser
- EventsDiagnoser
- FileIODiagnoser
Cada diagnóstico genera datos de rendimiento relacionados con ese diagnóstico. 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 database del generador de perfiles funciona en ADO.NET o Entity Framework Core.
Prerrequisitos
Visual Studio 2022, versión 17.9 o posterior
El proyecto de prueba comparativa debe incluir los dos paquetes NuGet siguientes:
Recopilación de datos de Benchmark.NET
Cree un proyecto de consola.
Las funciones comparativas se deben agregar a una aplicación de consola de .NET. Estas funciones pueden ser funciones contenedoras que hacen referencia a otros tipos de proyecto.
Establezca la compilación en una compilación de versión en lugar de una compilación de depuración.
Atribuye el código para los diagnósticos y las pruebas comparativas e incluya código para ejecutar las pruebas comparativas (
BenchmarkRunner.Run
).Agregue el nombre del diagnóstico como atributo a la clase que contiene los puntos de referencia para los que desea generar datos.
Por ejemplo, puede usar 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); } } }
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 BenchmarkDotNet
En Visual Studio, seleccione Archivo > abierto > archivo y vaya a la ubicación del archivo .diagsession y, a continuación, seleccione y abra el archivo.
Seleccione la pestaña Benchmarks (Pruebas comparativas ) para ver los datos de las pruebas comparativas BenchmarkDotNet.
Para obtener más información sobre los resultados de la pestaña Benchmarks , consulte la documentación de BenchmarkDotNet .
Haga clic con el botón derecho en una fila en los resultados y elija Seleccionar intervalo de tiempo para sincronizar el gráfico de escala de tiempo con la prueba comparativa.
Seleccione una de las pestañas disponibles, como Uso de CPU o Asignaciones.
En función del diagnóstico que usó para recopilar datos, puede obtener información relacionada con la asignación de memoria, el uso de CPU, los contadores y otros datos de rendimiento. Para analizar las asignaciones de memoria, use memoryDiagnoser integrado agregando el atributo [MemoryDiagnoser]. Para obtener más información, consulte Diagnósticos.
Nota:
El generador de perfiles solo admite [MemoryDiagnoser] y los diagnósticos enumerados anteriormente en este artículo.
Para obtener un ejemplo del uso del generador de perfiles para analizar las asignaciones de memoria, consulte la entrada de blog Benchmarking with Visual Studio Profiler (Pruebas comparativas con Visual Studio Profiler).
Para analizar los datos relacionados con otras pestañas, como uso de CPU, consulte los artículos correspondientes en la documentación de generación de perfiles.