封装几个代码,方便以后查询和使用
Windows高精度时钟 精度:<1us 微秒
1.1Function 1统计一段代码的CPU时间
LARGE_INTEGER freq;
LARGE_INTEGER beginTime;
LARGE_INTEGER endTime;
QueryPerformanceFrequency(&freq);
QueryPerformanceCounter(&beginTime);
QueryPerformanceCounter(&endTime);
double second = (double)(endTime.QuadPart - beginTime.QuadPart) / (double)freq.QuadPart;
1.2更方便的宏定义
#define COUNT_BEGIN LARGE_INTEGER freq,beginTime,LARGE_INTEGER endTime;\
QueryPerformanceFrequency(&freq);\
QueryPerformanceCounter(&beginTime);
#define COUNT_END QueryPerformanceCounter(&endTime);
#define SHOW_TIME_COUNT printf("%llf second passed\n",(double)(endTime.QuadPart - beginTime.QuadPart) / (double)freq.QuadPart;);
2.1Function 2高精度Sleep()
LARGE_INTEGER freq;
LARGE_INTEGER start, end;
QueryPerformanceFrequency(&freq);
unsigned int s = 0;
unsigned int ms = 0;
unsigned int us = 100000;
us += ms*1000+s*1000*1000;
LONGLONG count = (us * freq.QuadPart) / (1000 * 1000);
QueryPerformanceCounter(&start);
count = count + startQuadPart ;
do
{
QueryPerformanceCounter(&end);
}while(end.QuadPart< count);
2.2 更方便的宏定义
#define SLEEP_S(S)
LARGE_INTEGER freq; \
LARGE_INTEGER start, end; \
QueryPerformanceFrequency(&freq); \
LONGLONG count = (S*1000*1000 * freq.QuadPart) / (1000 * 1000); \
QueryPerformanceCounter(&start); \
count = count + startQuadPart ; \
do \
{ \
QueryPerformanceCounter(&end); \
}while(end.QuadPart< count);
#define SLEEP_MS(MS)
LARGE_INTEGER freq; \
LARGE_INTEGER start, end; \
QueryPerformanceFrequency(&freq); \
LONGLONG count = (S*1000 * freq.QuadPart) / (1000 * 1000); \
QueryPerformanceCounter(&start); \
count = count + startQuadPart ; \
do \
{ \
QueryPerformanceCounter(&end); \
}while(end.QuadPart< count);
#define SLEEP_US(US)
LARGE_INTEGER freq; \
LARGE_INTEGER start, end; \
QueryPerformanceFrequency(&freq); \
LONGLONG count = (US * freq.QuadPart) / (1000 * 1000); \
QueryPerformanceCounter(&start); \
count = count + startQuadPart ; \
do \
{ \
QueryPerformanceCounter(&end); \
}while(end.QuadPart< count);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)