2015-12-25 27 views
2

我想知道爲什麼我的整個應用程序的運行時間小於8 seconds,而從clock_gettime獲得的時間是19.3468 seconds,比現實中的時間多出兩倍。問題從哪裏來?CPU花在CPU上的時間比現實中更快

clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time_start); 

... // many calculations 

clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time_stop); 
double time_diff=(time_stop.tv_sec-time_start.tv_sec+ 
    (1e-9)*(time_stop.tv_nsec-time_start.tv_nsec); 

更新:

我沒有使用任何OpenMP的明確。

+3

相關:[瞭解clock_gettime()的不同時鐘](http://stackoverflow.com/questions/7506952/understanding-the-different-clocks-of-clock-gettime) – dxiv

+0

@dxiv但處理時間總是少於上牆時間不多。 – ar2015

+1

您在詢問CPU時間。考慮多個CPU。 – dxiv

回答

3

CLOCK_MONOTONIC應該用於衡量總體運行時間,包括花費在阻塞等待IO上的時間,但也包括在程序試圖運行時計劃的其他進程造成的減速。