Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 메서드 실행 시간 측정하기 – Stopwatch 클래스 완벽 가이드

.NET 환경에서 특정 메서드의 실행 시간을 정확하게 측정하고 싶다면 Stopwatch 클래스를 사용하는 것이 가장 간편하고 신뢰할 수 있는 방법입니다. Stopwatch는 System.Diagnostics 네임스페이스에 포함되어 있으며, 고해상도 타이머를 기반으로 밀리초(ms) 단위의 정밀한 시간 측정을 지원합니다.

1. Stopwatch 시작하기

아래와 같이 StartNew() 메서드를 호출하면 Stopwatch 인스턴스가 생성되는 동시에 시간 측정이 바로 시작됩니다.

Stopwatch s = Stopwatch.StartNew();

2. 경과 시간 확인하기

측정된 실행 시간은 ElapsedMilliseconds 속성을 통해 밀리초 단위로 확인할 수 있습니다.

s.ElapsedMilliseconds

측정을 종료할 때는 Stop() 메서드를 호출하면 됩니다. 이후에도 ElapsedMilliseconds 값은 유지되므로 언제든지 최종 경과 시간을 조회할 수 있습니다.

3. 전체 예제 코드

메서드 호출부터 결과 출력까지의 전체 과정을 담은 완성된 코드는 다음과 같습니다.

using System;
using System.IO;
using System.Diagnostics;

public class Demo {
    public static void Main(string[] args) {
        // Stopwatch 생성과 동시에 측정 시작
        Stopwatch s = Stopwatch.StartNew();
        display();

        for (int index = 0; index < 5; index++) {
            Console.WriteLine("Time taken: " + s.ElapsedMilliseconds + "ms");
        }
        s.Stop();
    }
    public static void display() {
        Console.WriteLine("Demo function!");
    }
}

4. 실행 결과

Demo function!
Time taken: 15ms
Time taken: 16ms
Time taken: 16ms
Time taken: 16ms
Time taken: 16ms

참고 사항

위 출력 결과에서 첫 번째 측정값(15ms)이 이후 값들(16ms)과 약간 다르게 나타나는 것을 볼 수 있습니다. 이는 JIT 컴파일 등 초기 실행 시 발생하는 오버헤드 때문입니다. 따라서 성능을 보다 정확하게 벤치마킹하려면 워밍업 실행 후 여러 번 측정하여 평균값을 구하는 것이 좋습니다.

또한 더 높은 정밀도가 필요하다면 ElapsedTicksElapsed.TotalMilliseconds 속성을 활용하면 소수점 이하의 세밀한 시간까지 측정할 수 있습니다.