상세 컨텐츠

본문 제목

c# 시간 측정 방법

C#

by 탑~! 2011. 11. 4. 10:09

본문


1. MilliSecond (밀리세컨드) 1/1000초

(닷넷2.0부터 지원)

System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
sw.Start();
sw.Stop();
sw.ElapsedMilliseconds.ToString();

// sw.Elapsed.ToString();

// sw.ElapsedTick.ToString();

2. 정밀 시간 측정 ( CPU의 TickCounter를 이용하여 측정 )

(Win32 API의 QueryPerformanceCounter() 이용, 하지만 프로세스 스케줄링 때문에 정밀 시간은 약간의 오차가 있다.)

(지원되지 않는 시스템에서는 0값이 올 수 있으므로 에러처리를 해야 함)

// 1초 카운터 횟수

[DllImport("kernel32.dll", CallingConvention = CallingConvention.Winapi)]
private static extern bool QueryPerformanceFrequency(out long frequency);

[DllImport("kernel32.dll", CallingConvention = CallingConvention.Winapi)]
private static extern bool QueryPerformanceCounter(out long counter);

long endCnt;

long startCnt = 0;

long frequency;

// 현재 카운터 가져오기

QueryPerformanceCounter(out startCnt);

....

QueryPerformanceFrequency(out frequency);

QueryPerformanceCounter(out endCnt);

// 진행된 시간 변환

double time = (endCnt - startCnt) / (double) frequency;

// 초단위

(endCnt - startCnt) / frequency;

// 밀리초 (1/1000)

(endCnt - startCnt) / (frequency/1000);

// 마이크로초 (1/1000000)

(endCnt - startCnt) / (frequency/1000000);

'C#' 카테고리의 다른 글

EscapeSequence  (0) 2011.11.17
WebClient Download Sample  (0) 2011.11.17
강제 형 변환(cast)보다는 as, is 연산자를 사용하는 것이 좋다  (0) 2011.10.24
SqlBulkCopy  (0) 2011.10.22
enum 의 flags 연산  (0) 2011.06.14

관련글 더보기