2013-03-30 41 views
2

在Windows上比clock()函数有更好的函数或方法来测量时间吗?我有一个短暂的操作,当我尝试clock()gettickcount()它说它花了0.0秒。我需要一种方法来测量它以毫秒或纳秒。使用C测量执行时间(在Windows上)

回答

7

您可以使用QueryPerformanceCounterQueryPerformanceFrequency

#include <stdio.h> 
#include <stdlib.h> 
#include <windows.h> 

int main(void) 
{ 
    LARGE_INTEGER frequency; 
    LARGE_INTEGER start; 
    LARGE_INTEGER end; 
    double interval; 

    QueryPerformanceFrequency(&frequency); 
    QueryPerformanceCounter(&start); 

    // code to be measured 

    QueryPerformanceCounter(&end); 
    interval = (double) (end.QuadPart - start.QuadPart)/frequency.QuadPart; 

    printf("%f\n", interval); 

    return 0; 
} 
+0

感谢。你一直很大的帮助。 – Bar

+0

这适用于顺序搜索代码。但是,当我使用“二进制搜索”代码时,它会使程序停止运行错误。可能是什么问题呢? – Bar

+0

上面的代码已经过测试,如果您遇到问题,它就在其他地方。调试你的“二进制搜索”...或者,[问你的问题作为一个新的StackOverflow问题](http://stackoverflow.com/questions/ask)。 – deepmax