C#의 성능 테스트를 위한 정확한 시간 측정

Muhammad Zeeshan 2023년10월12일
  1. 스톱워치 개요
  2. C#에서 성능 테스트를 위한 정확한 시간 측정을 위한 Stopwatch 구현
C#의 성능 테스트를 위한 정확한 시간 측정

이 기사에서는 C#을 사용하여 성능 테스트를 위한 정확한 시간을 측정하는 방법을 배웁니다. System.Diagnostics 네임스페이스에는 실행에 걸리는 시간을 측정하는 간단한 방법을 제공하는 Stopwatch라는 뛰어난 클래스가 있습니다.

스톱워치에 대한 개요를 살펴보겠습니다.

스톱워치 개요

Stopwatch 내장 클래스는 .Net 프레임워크에서 사용할 수 있으며 다양한 상황에서 사용할 수 있습니다. 코드를 최적화하거나 여러 잠재적 솔루션에서 최상의 옵션을 선택하거나 성능 스파이크를 찾는 데 도움이 됩니다.

즉, 스톱워치는 특정 프로세스 또는 활동이 완료되는 데 걸리는 시간을 결정할 수 있는 간단한 장치입니다. 시간이 중요한 역할을 하는 상황에서는 코드를 최적화하는 것이 도움이 됩니다.

그것은 높은 수준의 정확도를 가지고 있으며 더 높은 수준의 복잡성을 가진 다른 모니터링 도구를 사용할 수 없거나 단순성을 위해 필요하지 않을 때 유용합니다.

C#에서 성능 테스트를 위한 정확한 시간 측정을 위한 Stopwatch 구현

Stopwatch의 기본 구현을 살펴보겠습니다. 다음 특성을 사용하여 경과 시간을 확인할 수 있습니다.

  1. .경과
  2. .ElapsedMilliseconds
  3. .ElapsedTicks

아래 데모에서는 프로세스 경과 시간을 출력하는 .Elapsed 기능을 구현했습니다.

  • Stopwatch 유틸리티를 활용하려면 다음 라이브러리를 가져오십시오.
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Diagnostics;
    
  • Main() 메서드에서 s라는 Stopwatch 개체를 만듭니다.
    Stopwatch s = new Stopwatch();
    
  • 프로세스 측정 시작:
    s.Start();
    
  • 지금 프로세스 코드를 작성하십시오. 예를 들어 문자열 값을 인쇄하기 위해 기본 for() 루프를 사용했습니다.
    for (int i = 0; i < 5; i++) {
      Console.WriteLine("Myself M.Zeeshan, Let's Code!");
    }
    
  • 코드를 작성한 후 프로세스 측정을 중지하십시오.
    s.Stop();
    
  • 마지막으로 .Elapsed 기능을 사용하여 프로세스 시간을 확인합니다.
    Console.WriteLine("Time elapsed: {0}", s.Elapsed);
    

완전한 소스 코드:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;

namespace StopwatchbyZeeshan {
  class Program {
    static void Main(string[] args) {
      Stopwatch s = new Stopwatch();
      s.Start();
      for (int i = 0; i < 5; i++) {
        Console.WriteLine("Myself M.Zeeshan, Let's Code!");
      }
      s.Stop();
      Console.WriteLine("Total Time elapsed: {0}", s.Elapsed);
    }
  }
}

출력:

Myself M.Zeeshan, Let's Code!
Myself M.Zeeshan, Let's Code!
Myself M.Zeeshan, Let's Code!
Myself M.Zeeshan, Let's Code!
Myself M.Zeeshan, Let's Code!
Total Time elapsed: 00:00:00.0144367
Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn