在Linux系統(tǒng)中,使用struct timeval
結(jié)構(gòu)體來表示時間間隔??梢允褂迷摻Y(jié)構(gòu)體來進行時間測量和計時。
下面是一個簡單的示例,演示如何使用struct timeval
來測量代碼段的執(zhí)行時間:
#include <stdio.h>
#include <sys/time.h>
int main() {
struct timeval start, end;
long long elapsedTime;
// 獲取起始時間
gettimeofday(&start, NULL);
// 在這里執(zhí)行需要測量時間的代碼段
// 例如,這里簡單地休眠1秒鐘
sleep(1);
// 獲取結(jié)束時間
gettimeofday(&end, NULL);
// 計算時間間隔
elapsedTime = (end.tv_sec - start.tv_sec) * 1000000LL + (end.tv_usec - start.tv_usec);
printf("Elapsed time: %lld microseconds\n", elapsedTime);
return 0;
}
在這個示例中,首先獲取起始時間,然后執(zhí)行需要測量時間的代碼段(這里簡單地使用sleep(1)
讓程序休眠1秒鐘),接著獲取結(jié)束時間并計算時間間隔,最后打印出經(jīng)過的時間。
需要注意的是,struct timeval
中的tv_sec
和tv_usec
分別表示秒和微秒。將兩者相乘即可得到總的微秒數(shù),從而得到代碼段的執(zhí)行時間。