2012-11-17 31 views
0

问题是我的程序太快,以至于无法检测到时间或GetTickCount()的变化,我如何防止这种情况发生?C++已用时间为0

谢谢您

+1

如果测量时间少于1毫秒,您可以尝试更精确的测量。 'QueryPerformanceCounter'将是一个好的开始,或者是新的头文件。 – chris

回答

0

的GetTickCount有5..15精确到毫秒,所以“零时差”,是一个普遍的问题。

如果您需要精确度,请使用QueryPerformanceCounter

0

您是否将整个运行时间打印为整数?如果您正在进行划分以获得流逝时间,请将分子或分母作为浮点数进行投射。

0

时间多长时间x运行并取平均值。

此外,您可以使用分析的准确时间。

-2

或者你可以尝试使用rtdsc。 详情请看这里:http://www.mcs.anl.gov/~kazutomo/rdtsc.html 段:

#include <stdio.h> 
#include "rdtsc.h" 

int main(int argc, char* argv[]) 
{ 
    unsigned long long a,b; 

    a = rdtsc(); 
    b = rdtsc(); 

    printf("%llu\n", b-a); 
    return 0; 
} 

甚至时辰是好的,但后来它需要C++ 11的要求(部分)。 细节:std::chrono and cout

+0

坏主意 - 在多核cpus上。 – SigTerm

+0

亲爱的朋友们,我知道这对多核cpus来说是个坏主意,但它可以在指定的情况下找出时间流逝。 – Sarang

0

使用

void WINAPI GetSystemTimeAsFileTime(
    _Out_ LPFILETIME lpSystemTimeAsFileTime 
); 

代替。它有更好的分辨率。在大多数情况下,这确实是需要的。