在 Linux 下,可以使用 gettimeofday
函數來精確計時
下面是一個簡單的示例,展示了如何使用 gettimeofday
函數來測量一段代碼的執行時間:
#include <stdio.h>
#include <sys/time.h>
void measure_time(const char *msg) {
struct timeval start, end;
// 獲取開始時間
gettimeofday(&start, NULL);
// 要測量的代碼段
for (int i = 0; i < 1000000; i++) {
// 這里放你需要計時的代碼
}
// 獲取結束時間
gettimeofday(&end, NULL);
// 計算執行時間并輸出
long seconds = end.tv_sec - start.tv_sec;
long microseconds = end.tv_usec - start.tv_usec;
printf("%s: %ld seconds, %ld microseconds\n", msg, seconds, microseconds);
}
int main() {
measure_time("Code execution time");
return 0;
}
在這個示例中,我們定義了一個名為 measure_time
的函數,它接受一個字符串參數 msg
,用于輸出提示信息。在函數內部,我們使用 gettimeofday
函數分別獲取代碼段執行前后的時間,然后計算差值并輸出結果。
在 main
函數中,我們調用 measure_time
函數,傳入一個字符串參數,表示要測量哪段代碼的執行時間。
需要注意的是,gettimeofday
函數返回的時間精度取決于系統硬件和配置。在大多數現代 Linux 系統上,它的時間精度可以達到微秒級別。如果需要更高精度的時間測量,可以考慮使用 clock_gettime
函數,它提供了更高精度的時間選項。