QueryPerformanceFrequency / QueryPerformanceCounter 사용 방법2018. 8. 14. 12:32
//#include <MMSystem.h>
#include <Windows.h>
( 초 단위 )
//clock_t before;
//double result;
//before = clock(); // 어떤 프로세스가 시작한지 얼마나 지났는지 알려주는 것
//for(int i=0; i<32765; i++) printf("%d\n",i);
//result = (double)(clock() - before) / CLOCKS_PER_SEC; // 시간으로 알고싶으면 초단위로 변환
//printf("걸린 시간은 %5.2f 입니다. \n", result);
( 밀리세컨 단위 ) 1
/*
단, 사용하기 위해서는 사용하는 파일에 Mmsystem.h 를 Include 해주고,
winmm.lib 를 Project=>Setting(ALT+F7) 메뉴의 LINK 텝에서 Object/library modules: 에 추가를 해주어야 합니다..
*/
/*DWORD dwStartTime = timeGetTime();
for(int i=0; i<32765; i++) printf("%d\n",i);
DWORD dwEndTime = timeGetTime();
printf("%d ms \n", dwEndTime - dwStartTime);*/
( 밀리세컨 단위 ) 2
// QueryPerformanceFrequency() => 자기 시스템이 최대 어느 정도까지의 timer resolution을 지원하는지를 판별하는데 사용됩니다.
// QueryPerformanceCounter() => 현재의 카운터를 알아내는 데에 사용됩니다.
// >>> 예를 들어,
// 앞의 함수를 콜한 후, 넘겨준 파라미터 값이 10000 으로 되어 있다면.. 그 시스템은 10000분의 1초(1/10000) 즉, 0.1밀리초까지 판별할 수 있습니다.
// 또한,
// 어떤 작업을 수행하기 전에, QueryPerformanceCounter() 함수를 한번 실행하고..
// 수행 후, 다시 콜 함으로써 각각 얻어진 카운터 값의 차이를 구함으로써 수행시간을 판별 가능.
/// 멤버 변수나 로벌 변수로 지정
LARGE_INTEGER frequency;
LAzRGE_INTEGER beginTime;
LARGE_INTEGER endTime;
/// 프로그램이나 클래스 시작 부분에
QueryPerformanceFrequency(&frequency);
/// 사용하고자 하는 부분에 다음 코딩
QueryPerformanceCounter(&beginTime);
/// 처리함수( );.....
for(int i=0; i<32765; i++) printf("%d\n",i);
QueryPerformanceCounter(&endTime);
__int64 elapsed = endTime.QuadPart - beginTime.QuadPart;
double duringTime = (double)elapsed / (double)frequency.QuadPart;
printf("%f \n", duringTime);
'API · MFC' 카테고리의 다른 글
[API/GDI+] Graphics.DrawRectangle (0) | 2015.12.04 |
---|---|
[API] WPARAM , LPARAM (0) | 2015.10.28 |
[API] Graphics.DrawImage (Image*, INT x, INT y, INT srcx, INT srcy, INT srcwidh, INT srcheight, Unit) 함수 정리 (0) | 2015.10.26 |
MultiByteToWideChar 함수의 이해와 사용법 (0) | 2015.10.16 |
[API] GetAsyncKeyState 함수 정리 (0) | 2015.09.24 |