📄 hi_res_timer.h
字号:
#ifndef _HI_RES_TIMER
#define _HI_RES_TIMER
class hi_res_timer
{
LARGE_INTEGER li;
#ifdef _DEBUG
#ifndef TRACE
#define _countof(array) (sizeof(array)/sizeof(array[0]))
static void tr(char *fmt, ...)
{
int len = 0;
char msg[1024];
va_list lst;
va_start(lst, fmt);
len = _vsnprintf(msg, _countof(msg), fmt, lst);
va_end(lst);
OutputDebugString(msg);
}
#else
#define tr TRACE
#endif // TRACE
#else
#define tr
#endif // _DEBUG
public:
hi_res_timer(bool start_now=true){li.QuadPart=0; if(start_now) start();}
~hi_res_timer() {}
void start()
{
QueryPerformanceCounter(&li);
}
LONGLONG read()
{
if( li.QuadPart == 0 )
return 0;
LARGE_INTEGER li1 = {0};
LARGE_INTEGER freq = {0};
LONGLONG dif = 0;
LONGLONG sec = 0;
if( !QueryPerformanceCounter(&li1) )
{
tr("[hi_res_timer]: QPC failed\n");
return 0;
}
dif = li1.QuadPart - li.QuadPart;
if( dif == 0 )
{
tr("[hi_res_timer]: dif == 0\n");
return 0;
}
if( !QueryPerformanceFrequency(&freq) )
{
tr("[hi_res_timer]: QPF failed\n");
return 0;
}
// tr("[hi_res_timer]: freq: %I64d, diff:%I64d\n", freq, dif);
if( freq.QuadPart == 0 )
{
tr("[hi_res_timer]: freq = 0?\n");
return 0;
}
sec = dif*1000/freq.QuadPart;
// tr("[hi_res_timer]: used time %I64d ms\n", sec);
// li.QuadPart = 0;
return sec;
}
};
#endif // _HI_RES_TIMER
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -