언어/C#

성능 측정 - DotnetBenchmark 퀵세팅

tsyang 2025. 3. 11. 01:00

DotnetBenchmark 프로젝트에 설치하기

  1. 프로젝트 폴더 (csproj있는 폴더)에다가 cmd를 켠다.
  2. 다음을 입력한다 'dotnet add package BenchmarkDotNet'

 

DotnetBenchmark 사용하기

  1. Build Configuration을 Release모드로 바꿔준다.
  2. Test할 메서드에 [Benchmark]어트리뷰트를 달아준다.
  3. 메모리 사용량도 측정하고 싶다면 MemoryDiagnoser도 달아준다.
    [MemoryDiagnoser]
    public class SomeTest
    {
        private const int TestSize = 1024;
        
        [Benchmark]
        public void TestAlloc()
        {
            var list = new List<int>();
            for(int i = 0 ; i < TestSize; ++i)
                list.Add(i);
        }
        
        [Benchmark]
        public void TestAllocReserve()
        {
            var list = new List<int>(TestSize);
            for(int i = 0 ; i < TestSize; ++i)
                list.Add(i);
        }
    }
  4. BenchmarkRunner.Run<T>()로 테스트를 수행한다. T는 테스트가 담긴 클래스이다.
    public class Program
    {
        public static void Main(string[] args)
        {
            var summary = BenchmarkRunner.Run<SomeTest>();
        }
    }


 

 

 

실행속도의 평균과 표준편차, 메디안까지 알려준다.

메모리 분석을 켜면 할당된 힙 크기와 각 제네레이션별로 GC가 평균 몇번 일어났는지도 알려준다.

 

 

 

오류 대응

Dotnet SDK도 깔고

Dotnet Runtime도 깔자

https://dotnet.microsoft.com/ko-kr/download/dotnet/8.0

 

.NET 8.0 다운로드(Linux, macOS 및 Windows)

Linux, macOS 및 Windows용 .NET 8.0 다운로드. .NET은 다양한 유형의 애플리케이션을 빌드하기 위한 무료 크로스 플랫폼 오픈 소스 개발자 플랫폼입니다.

dotnet.microsoft.com

 

앤간하면 된다.

 

 

 

'언어 > C#' 카테고리의 다른 글

ThreadLocal<T>, AsyncLocal<T>  (1) 2024.12.20
ValueTask / ValueTask<T>  (0) 2024.05.02
Task.Delay (vs Thread.Sleep)  (2) 2024.04.10
동시성 개요  (0) 2024.04.01
struct 와 in, readonly  (1) 2024.03.20