在C語言中,可以使用timeval結構體來進行高精度時間測量。timeval結構體定義如下:
struct timeval {
time_t tv_sec; // seconds
suseconds_t tv_usec; // microseconds
};
下面是一個示例代碼,演示如何使用timeval結構體進行高精度時間測量:
#include <stdio.h>
#include <sys/time.h>
int main() {
struct timeval start, end;
long mtime, seconds, useconds;
// 獲取起始時間
gettimeofday(&start, NULL);
// 執行一些操作,比如循環計算一個大數
int sum = 0;
for (int i = 0; i < 1000000; i++) {
sum += i;
}
// 獲取結束時間
gettimeofday(&end, NULL);
// 計算時間差
seconds = end.tv_sec - start.tv_sec;
useconds = end.tv_usec - start.tv_usec;
mtime = ((seconds) * 1000 + useconds/1000.0) + 0.5;
printf("Elapsed time: %ld milliseconds\n", mtime);
return 0;
}
在上面的示例代碼中,首先使用gettimeofday函數獲取起始時間和結束時間,并計算時間差。最后打印出經過的時間,以毫秒為單位。這樣就可以精確地測量程序執行的時間。