2015-04-01 57 views
0

我試圖獲得一些函數運行所需的時間,但是當我使用調試器運行時,我得到零。當我插入一個斷點並通過程序時,我得到正確的輸出。這是下面的代碼。C++ GetSystemTime在調試時返回0,但在跳過斷點時返回正確的輸出

vector<int> nums = { 5, 8, 1, 3, 9, 45, 12, 4 }; 
SYSTEMTIME startTime; 
SYSTEMTIME endTime; 
Sorter<int> s; 
s.setData(nums); 
GetSystemTime(&startTime); 
s.bubbleSort(); 
s.combSort(); 
s.insertionSort(); 
GetSystemTime(&endTime); 
auto diff = endTime.wMilliseconds - startTime.wMilliseconds; 
cout << "Took " << diff << endl; 
+0

我敢打賭,即使在BOGO排序小於1ms會工作在現代硬件上的8個元素的數組。 – Chad 2015-04-01 18:52:15

+0

要排序的初始數據數組太小而無法獲得有價值的性能統計信息。 – 2015-04-01 19:06:18

+0

我使用了10000個數字的數組,它仍然返回零。我只是不相信冒泡排序是在不到1ms的時間內對10k個隨機數進行排序。 – 2015-04-02 00:51:45

回答

0

這裏是你應該如何計算時間差:

_int64 Delta(SYSTEMTIME st1, SYSTEMTIME st2) 
{ 
    union timeunion 
    { 
     FILETIME fileTime; 
     ULARGE_INTEGER ul; 
    }; 

    timeunion ft1; 
    timeunion ft2; 

    SystemTimeToFileTime(&st1, &ft1.fileTime); 
    SystemTimeToFileTime(&st2, &ft2.fileTime); 

    return ft2.ul.QuadPart - ft1.ul.QuadPart; 
} 
相關問題