函數"clock_gettime"是基於Linux C語言的時間函數,可以用於計算時間,有秒和納秒兩種精度。
函數原型:
int clock_gettime(clockid_t clk_id, struct timespec *tp);
其中,cld_id類型四種:
a、CLOCK_REALTIME:系統實時時間,隨系統實時時間改變而改變
b、CLOCK_MONOTONIC,從系統啟動這一刻起開始計時,不受系統時間被用戶改變的影響
c、CLOCK_PROCESS_CPUTIME_ID,本進程到當前代碼系統CPU花費的時間
d、CLOCK_THREAD_CPUTIME_ID,本線程到當前代碼系統CPU花費的時間
本文默認采用CLOCK_REALTIME,即可實現並行程序的准確計時。
其中,timespec結構包括:
struct timespec {
time_t tv_sec; /* 秒*/
long tv_nsec; /* 納秒*/
};
--------------------------------------------------------------------------------------------------------------
例如:計算時間差
#include <time.h>
struct timespec time1 = {0, 0};
struct timespec time2 = {0, 0};
clock_gettime(CLOCK_REALTIME, &time1);
。。。
。。。
clock_gettime(CLOCK_REALTIME, &time2);
cout << "time passed is: " << (time2.tv_sec - time1.tv_sec)*1000 + (time2.tv_nsec - time1.tv_nsec)/1000000 << "ms" << endl;