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);
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 |