C GetTickCount(windows函数)到时间(纳秒)

时间:2010-09-24 12:10:42

标签: c time performancecounter

我正在测试我的同事提供的一个代码,我需要测量执行一个例程的时间,而不是执行上下文切换(线程)。

衡量时间的最佳选择是什么?我知道可以使用高分辨率计时器,

QueryPerformanceCounter
QueryPerformanceFrequency

但是如何使用该定时器将其转换为毫秒或纳秒?

2 个答案:

答案 0 :(得分:3)

LARGE_INTEGER lFreq, lStart;
LARGE_INTEGER lEnd;
double d;

QueryPerformanceFrequency(&lFreq);
QueryPerformanceCounter(&lStart);

/* do something ... */

QueryPerformanceCounter(&lEnd);
d = ((doublel)End.QuadPart - (doublel)lStart.QuadPart) / (doublel)lFreq.QuadPart;

d是以秒为单位的时间间隔。

答案 1 :(得分:1)

由于我执行的操作大约是500纳米,而且定时器没有精确度,我所做的是,

我使用GetTickCount()保存了实际时间 - (使用〜12milis的精度)并执行路径N_TIMES(执行常规的次数),直到我在控制台上按下某些内容为止。

再次计算时间,并将差值除以N_TIMES,类似:

int static counter;

  

void routine()   {      //这里的运作..      计数器++;   }

     

int main(){
      start< - GetTickCount();       handle< - createThread(.....,routine,...);
      resumeThread(手柄);

getchar();
     

WaitForSingleObject(handle,INFINITE);

     

Elapsed =(GetTickCount() - start)* 1000000.0)/ counter;      printf(“Nanos:%d”,已过去);   }

:)