본문 바로가기

C#

C# Stopwatch 대신 BenchmarkTimer 만들기

C# 내장 클래스 Stopwatch는 간단한 성능 측정에 자주 사용됩니다. 하지만 Stopwatch가 제공하는 기본 기능 그 이상으로 확장하고 싶다면, 직접 BenchmarkTimer를 만들어보는 것도 좋은 방법입니다.

1. BenchmarkTimer란?

BenchmarkTimer는 간단히 코드 실행 시간을 측정하는 타이머입니다. Stopwatch보다 더 직관적이고 맞춤형 기능을 추가할 수 있습니다.

2. BenchmarkTimer 간단 구현 예제

using System;
using System.Diagnostics;

public class BenchmarkTimer : IDisposable
{
    private Stopwatch _stopwatch;
    private string _name;

    public BenchmarkTimer(string name = "Process")
    {
        _name = name;
        _stopwatch = Stopwatch.StartNew();
    }

    public void Dispose()
    {
        _stopwatch.Stop();
        Console.WriteLine($"[{_name}] Elapsed: {_stopwatch.Elapsed.TotalMilliseconds} ms");
    }
}

BenchmarkTimer는 IDisposable을 구현하여 using 블록 내에서 간단히 사용할 수 있습니다.

3. 사용법

class Program
{
    static void Main()
    {
        using (var timer = new BenchmarkTimer("Test Loop"))
        {
            for (int i = 0; i < 1000000; i++)
            {
                // 작업 수행
            }
        }
    }
}

using 블록이 끝나면 자동으로 시간을 측정해 출력합니다. Stopwatch보다 코드가 더 깔끔해지고 여러 개의 커스텀 타이머도 관리하기 편합니다.