2013-03-30 62 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