프로파일링 도구를 사용하여 Visual Studio에서 BenchmarkDotNet 데이터를 수집하고 볼 수 있습니다.
벤치마크 클래스에 BenchmarkDotNet 진단자를 특성으로 추가하면 벤치마크가 실행된 후 .diagsession 파일이 생성됩니다. 그런 다음 Visual Studio에서 .diagsession 을 열고 벤치마크에 대한 프로파일링 데이터를 볼 수 있습니다.
지원되는 진단자는 다음과 같습니다.
- CPU 사용 진단기
- 데이터베이스 진단기
- DotNetCountersDiagnoser
- EventsDiagnoser
- FileIODiagnoser
각 진단자는 해당 진단자와 관련된 성능 데이터를 생성합니다. 예를 들어 CPUUsageDiagnoser는 CPU 데이터가 포함된 .diagsession 파일을 생성하고 DatabaseDiagnoser는 데이터베이스 작업에 대한 데이터를 사용하여 .diagsession 파일을 생성합니다. 제한 사항은 연결된 프로파일링 도구에 해당합니다. 예를 들어 프로파일러의 데이터베이스 도구는 ADO.NET 또는 Entity Framework Core에서 작동합니다.
필수 조건
Visual Studio 2022 버전 17.9 이상
벤치마크 프로젝트에는 다음 두 개의 NuGet 패키지가 포함되어야 합니다.
Benchmark.NET 데이터 수집
콘솔 프로젝트를 만듭니다.
벤치마크 함수를 .NET 콘솔 애플리케이션에 추가해야 합니다. 이러한 함수는 다른 프로젝트 형식을 참조하는 래퍼 함수일 수 있습니다.
빌드를 디버그 빌드 대신 릴리스 빌드로 설정합니다.
진단자 및 벤치마크에 대한 코드 특성을 지정하고 벤치마크(
BenchmarkRunner.Run
)를 실행하는 코드를 포함합니다.데이터를 생성하려는 벤치마크가 포함된 클래스에 진단자 이름을 특성으로 추가합니다.
예를 들어 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); } } }
애플리케이션을 실행하여 .diagsession 파일을 생성합니다.
콘솔 출력을 확인하여 파일의 위치를 가져옵니다. 다음은 그 예입니다.
// * Diagnostic Output - VSDiagnosticsDiagnoser * Collection result moved to 'BenchmarkDotNet_Md5VsSha256_20231218_123326.diagsession'. Session : {7f38bcc2-c692-4266-aa24-b12bc5325ea4} Stopped Exported diagsession file: *.diagsession
BenchmarkDotNet 데이터 보기
Visual Studio에서 파일 > 열기 > 파일을 선택하고 .diagsession 파일의 위치로 이동한 다음, 파일을 선택하고 엽니다.
BenchmarkDotNet 벤치마크에 대한 데이터를 보려면 벤치마크 탭을 선택합니다.
벤치마크 탭의 결과에 대한 자세한 내용은 BenchmarkDotNet 설명서를 참조하세요.
결과에서 행을 마우스 오른쪽 단추로 클릭하고 시간 범위 선택을 선택하여 타임라인 그래프를 벤치마크와 동기화합니다.
CPU 사용량 또는 할당과 같은 사용 가능한 탭 중 하나를 선택합니다.
데이터를 수집하는 데 사용한 진단자에 따라 메모리 할당, CPU 사용량, 카운터 및 기타 성능 데이터와 관련된 인사이트를 얻을 수 있습니다. 메모리 할당을 분석하려면 [ MemoryDiagnoser ] 특성을 추가하여 기본 제공 MemoryDiagnoser를 사용합니다. 자세한 내용은 진단기를 참조하세요.
비고
프로파일러는 [MemoryDiagnoser]와 이 문서의 앞에 나열된 진단자만 지원합니다.
프로파일러를 사용하여 메모리 할당을 분석하는 예제는 Visual Studio Profiler를 사용한 벤치마킹 블로그 게시물을 참조하세요.
CPU 사용량과 같은 다른 탭과 관련된 데이터를 분석하려면 프로파일링 설명서의 해당 문서를 참조하세요.
관련 콘텐츠
- 먼저 프로파일링 살펴보기
- 어떤 도구를 사용해야 하나요?