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

C# Stopwatch 클래스로 경과 시간 측정하기

C#의 Stopwatch 클래스는 코드 실행에 소요된 경과 시간을 정밀하게 측정하기 위한 도구입니다. 특정 함수나 알고리즘이 실행되는 데 걸리는 시간을 계산할 때 유용하게 활용되며, System.Diagnostics 네임스페이스에 포함되어 있습니다.

Stopwatch 시작하기

경과 시간을 측정하려면 먼저 스톱워치를 시작해야 합니다. StartNew() 메서드를 사용하면 스톱워치 인스턴스를 생성하는 동시에 측정이 바로 시작됩니다.

var sw = Stopwatch.StartNew();

경과 틱(Ticks) 가져오기

스톱워치가 시작된 이후 경과된 틱(tick) 수를 확인하려면 ElapsedTicks 속성을 사용합니다.

long ticks = sw.ElapsedTicks;

예제

다음은 Stopwatch 클래스를 사용하여 경과 틱 수를 콘솔에 출력하는 전체 예제입니다.

using System;
using System.Linq;
using System.Diagnostics;

public class Demo {
    public static void Main() {
        var sw = Stopwatch.StartNew();
        long ticks = sw.ElapsedTicks;
        Console.WriteLine(ticks);
    }
}

출력 결과

582

주요 속성 및 메서드

Stopwatch 클래스에서 자주 사용되는 주요 멤버는 다음과 같습니다.

  • Elapsed: TimeSpan 형식으로 총 경과 시간을 반환합니다.
  • ElapsedMilliseconds: 경과 시간을 밀리초 단위로 반환합니다.
  • ElapsedTicks: 타이머 빈도 기준의 경과 틱 수를 반환합니다.
  • Start(): 스톱워치 측정을 시작합니다.
  • Stop(): 측정을 중지하고 지금까지의 경과 시간을 유지합니다.
  • Reset(): 경과 시간을 0으로 초기화합니다.
  • Restart(): 시간을 초기화한 후 즉시 다시 측정을 시작합니다.

함수 실행 시간 측정 실전 예제

실제 코드 블록의 성능을 측정할 때는 Stop()으로 측정을 종료한 뒤 경과 시간을 확인하는 방식이 일반적입니다.

using System;
using System.Diagnostics;

public class Demo {
    public static void Main() {
        var sw = Stopwatch.StartNew();

        // 측정 대상 작업
        long sum = 0;
        for (int i = 0; i < 1000000; i++) {
            sum += i;
        }

        sw.Stop();
        Console.WriteLine($"실행 시간: {sw.ElapsedMilliseconds}ms");
    }
}

이처럼 Stopwatch 클래스를 활용하면 별도의 외부 도구 없이도 코드 내에서 간편하게 성능을 측정하고 병목 지점을 분석할 수 있습니다.