我试图获得一些函数运行所需的时间,但当我使用调试器运行时,我得到的时间为零。当我插入一个断点并逐步执行程序时,我会得到正确的输出。这是下面的代码。
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;
以下是您应该如何计算时差:
_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;
}