兩者的優勢與區別:
gettimeofday()可以精確到微秒,精度很重要
clock()計算cpu總耗時,可統計平行計算的任務量
這個函式會把時間包裝為乙個結構體返回。包括秒,微妙,時區等資訊。
標頭檔案,函式原型與結構體
#include
intgettimeofday
(struct timeval*tv,
struct timezone *tz )
struct timeval;
struct timezone
程式例項:
#include
#include
using
namespace std;
intmain()
gettimeofday
(&end,
null);
long
long spend_time =
(end.tv_sec - start.tv_sec)
*1000000
+(end.tv_usec - start.tv_usec)
; cout << spend_time <<
"us"
<< endl;
return0;
}
執行結果:
首先看一下定義:
clock()是程式從啟動到函式呼叫占用cpu的時間。這個函式返回從「開啟這個程式程序」到「程式中呼叫clock()函式」時之間的cpu時鐘計時單元(clock tick)數。
注意:這裡說的是程序。
該函式返回的是整個程序耗費的cpu時鐘數。也就是說採用多執行緒時,即便耗時為1s,但如果此時cpu執行量為1000%,使用clock()函式統計出來的轉換時間為10s。
int i =
100000000
;clock_t start,finish;
//定義開始,結束變數
start =
clock()
;//初始化
while
( i--);
finish =
clock()
;//初始化結束時間
double duration =
(double
)(finish - start)
/ clocks_per_sec;
//轉換浮點型
printf
("%lf seconds\n"
, duration )
;
這樣就可以了,乍一看很合理呀, 程式開始獲取,程式結束了獲取時間,但是執行多執行緒程式的時候,時間並沒有減少,甚至還有所增加。 執行緒程式是把任務分到多個執行緒上,平行計算。而clock()函式計算的是所有的cpu的時間,這樣跟單執行緒的就沒有區別了。 c c 獲取時間
方法一 time t time time t timer 可以獲取當前的系統時間,此函式返回的是從公元1970年1月1日0時0分0秒算起到現在所經過的秒數 如果引數不是空指標的話,它也會把返回值設定到入參指標所指物件中 在標頭檔案中,有 typedef long time t,所以time t其實就...
c c 獲取系統時間
方案 優點 僅使用c標準庫 缺點 只能精確到秒級 include include int main void size t strftime char strdest,size t maxsize,const char format,const struct tm timeptr 根據格式字串生成字...
C C 技巧 獲取時間
標頭檔案typedef time64 t time t time value 使用乙個長整型表示時間,單位為秒。struct timespec 使用兩個變數來表示時間,tv sec表示格林威治標準時間 gmt 1970 1 1 0 0 0開始到現在的秒數,ty nsec則表示秒數後面的精度,單位為納...