친절한 답변 고맙습니다.
코딩까지 자세하게 써 주시고..^^
고맙습니다.
심성현 님이 쓰신 글 :
: usec가 마이크로세컨드(1/1000000초)를 말씀하시는건가요?
: 그렇다면 고해상도 성능 카운터 함수를 사용하시면 됩니다.
: QueryPerformanceFrequency
: QueryPerformanceCounter
:
:
: #include
: #include
:
: void WorkIdle()
: {
: int a = 0;
: a = a + 1;
: }
:
: void WorkBusy()
: {
: int a = 0;
: for(int i=0; i<1000000000; ++i)
: a = a + 1;
: }
:
: int main()
: {
: LARGE_INTEGER freq; // 주파수
: LARGE_INTEGER beforeCount; // 전카운트
: LARGE_INTEGER afterCount; // 후카운트
: double timeBusy, timeIdle;
:
: // 주파수측정함수는 '고해상도 성능 카운터'가 1초에 몇번 카운팅 하는지를 구해줍니다.
: // 시스템성능에 따라 차이가 있으므로 구해주는겁니다.
: // 한번만 구해놓고 계속 참조하면 됩니다.
: QueryPerformanceFrequency(&freq);
:
: QueryPerformanceCounter(&beforeCount); // 일하기 전 카운트를 구합니다.
: WorkIdle(); // 일을 합니다.
: QueryPerformanceCounter(&afterCount); // 일한 후 카운트를 구합니다.
: // 경과시간 계산은 일하는 동안 증가된 카운트를 주파수로 나눠주면 됩니다.
: timeIdle = (double)(afterCount.QuadPart - beforeCount.QuadPart) / freq.QuadPart;
:
: QueryPerformanceCounter(&beforeCount);
: WorkBusy();
: QueryPerformanceCounter(&afterCount);
: timeBusy = (double)(afterCount.QuadPart - beforeCount.QuadPart) / freq.QuadPart;
:
: printf("WorkIdle time : %g(sec) = %g(usec)\n", timeIdle, timeIdle*1000000);
: printf("WorkBusy time : %g(sec) = %g(usec)\n", timeBusy, timeBusy*1000000);
:
: getchar();
: return 0;
: }
: |