본문 바로가기

C# 문법

[C#] Stopwatch를 이용해 경과시간 가져오기

Stopwatch란?

  • Stopwatch 인스턴스는 한 한 간격에 대해 경과 된 시간을 측정하거나 여러 간격에 걸쳐 지난 총시간을 측정할 수 있습니다.
  • Start와 Stop의 경과 시간을 Elapsed 알 수 있습니다.
  • 우리가 일반적으로 사용하는 스톱워치를 사용하듯이 사용하실 수 있습니다.

Stopwatch 사용 방법

public void Run()
{
    //Stopwatch 선언
    Stopwatch sw = new Stopwatch();
    //Stopwatch 시작
    sw.Start();

    // 1초간 Delay
    Console.WriteLine($"시작후 1초 Delay");
    Thread.Sleep(1000);

    //Elapsed로 중간중간의 경과시간을 확인할 수 있습니다.
    TimeSpan ts = sw.Elapsed;
    Console.WriteLine($"경과 시간 {ts.TotalMilliseconds}ms");

    // 3초간 Delay
    Console.WriteLine($"추가 3초 Delay");
    Thread.Sleep(3000);

    if (sw.IsRunning)
    {
        //Stopwatch 정지
        sw.Stop();
        TimeSpan tSpan = sw.Elapsed;
        Console.WriteLine($"경과 시간 {tSpan.TotalMilliseconds}ms");
        Console.WriteLine($"경과 시간 {sw.ElapsedMilliseconds}ms");

        //만약 주파수를 알고, 그 경과시간동안 발생한 틱수를 알고 있다면?
        //
        long frequency = Stopwatch.Frequency;
        long tickCount = sw.ElapsedTicks;
        Console.WriteLine($"ticl {frequency} , Frequency {frequency}");
        Console.WriteLine($"경과 시간 {tickCount / frequency}s");
    }
}

결과

시작후 1초 Delay
경과 시간 1044.6594ms
추가 3초 Delay
경과 시간 4081.1771ms
경과 시간 4081ms
ticl 10000000 , Frequency 10000000
경과 시간 4s
  • 개인적으로 ElapsedMilliseconds 가 가장 간편한것 같습니다.

참고

MDSN - Stopwatch