在Linux下使用nanosleep函數可以實現高精度的計時。nanosleep函數可以讓程序暫停指定的納秒級時間,實現微秒級的計時精度。
下面是一個示例程序,演示如何使用nanosleep函數實現高精度計時:
#include <stdio.h>
#include <time.h>
int main() {
struct timespec start, end;
long long time_diff;
clock_gettime(CLOCK_MONOTONIC, &start);
// 執行需要計時的操作,比如一個循環
for (int i = 0; i < 1000000; i++) {
// do something
}
clock_gettime(CLOCK_MONOTONIC, &end);
time_diff = (end.tv_sec - start.tv_sec) * 1000000000 + (end.tv_nsec - start.tv_nsec);
printf("Time taken: %lld nanoseconds\n", time_diff);
return 0;
}
在上面的示例中,我們使用clock_gettime函數獲取當前時間,并分別在需要計時的操作開始和結束時記錄時間。最后計算時間差,即為需要計時的操作所花費的時間。
注意,需要在編譯時鏈接librt庫,以便能夠使用clock_gettime函數。可以使用以下命令進行編譯:
gcc -o high_precision_timer high_precision_timer.c -lrt
這樣就可以在Linux下使用nanosleep函數實現高精度的計時了。