我想打印我的函數的運行時間。出於某種原因,我的計時器總是返回0.誰能告訴我爲什麼?函數的運行時間
double RunningTime(clock_t time1, clock_t time2)
{
double t=time1 - time2;
double time = (t*1000)/CLOCKS_PER_SEC;
return time;
}
int main()
{
clock_t start_time = clock();
// some code.....
clock_t end_time = clock();
std::cout << "Time elapsed: " << double(RunningTime(end_time, start_time)) << " ms";
return 0;
}
我試圖使用gettimeofday
,它仍然返回0。
double get_time()
{
struct timeval t;
gettimeofday(&t, NULL);
double d = t.tv_sec + (double) t.tv_usec/100000;
return d;
}
int main()
{
double time_start = get_time();
//Some code......
double time_end = get_time();
std::cout << time_end - time_start;
return 0;
}
使用chrono
也試過,它給了我各種編譯錯誤:
- 錯誤:#ERROR這文件需要對即將到來的ISO C++標準C++ 0x的 編譯器和庫支持。此支持目前是
的實驗,並且必須啓用-std = C++ 0x或-std = gnu ++ 0x 編譯器選項。 - 警告:'auto'會改變C++ 0x的含義;請刪除它
- 錯誤:ISO C++禁止「T1」的聲明,沒有類型的錯誤: 「的std ::時辰」還沒有被宣佈
錯誤:請求成員在「數」「(T2 - T1 )」,這是 非類型的 'INT'
INT主() { 自動T1 =標準::計時:: high_resolution_clock ::現在();
//Some code...... auto t2 = std::chrono::high_resolution_clock::now(); std::cout << "Time elapsed: " << std::chrono::duration_cast<std::chrono::milliseconds>(t2-t1).count() << " milliseconds\n"; return 0; }
考慮使用''如果你想要很好的分辨率。您可以輕鬆地爲單位指定毫秒而不是計算它。 –
chris
在* nix系統上,嘗試'gettimeofday()'獲得高分辨率時間(微秒)。 – gavinb
如果你沒有C++ 11,你可以考慮linux上的clock_gettime(使用'CLOCK_MONOTONIC_HR'),或'gethrtime'來處理大多數其他的UNIX變體,以及'Windows上的QueryPerformanceCounter'。 – jxh