C C 獲取時間方法

2021-10-17 10:16:32 字數 1584 閱讀 3166

兩者的優勢與區別:

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則表示秒數後面的精度,單位為納...