在Linux下計算某個程序段執行的時間一般使用gettimeofday函數,此函數的聲明在sys/time.h文件中。此函數接收兩個結構體參數,分別為timeval、timezone.
兩個結構體的聲明如下:
struct timeval {
time_t tv_sec; /* seconds */
long tv_usec; /* microseconds */
};
struct timezone {
int tz_minuteswest;
int tz_dsttime;
};
一般通過gettimeofday函數獲得當前時間時,第二個參數為nullptr。結構體timeval中的tv_sec表示秒,tv_usec表示微秒。
matlab中通過tic(start a stopwatch timer)和toc(read the stopwatch timer)兩個函數來給出程序段所運行的時間,這里通過兩個宏TIC和TOC來實現。測試代碼如下:
#include <sys/time.h>
#include <unistd.h>
#include <iostream>
#define TIC \
struct timeval time1, time2; \
gettimeofday(&time1, nullptr);
#define TOC \
gettimeofday(&time2, nullptr); \
double elapsed_time = (time2.tv_sec - time1.tv_sec) * 1000. + \
(time2.tv_usec - time1.tv_usec) / 1000.; \
fprintf(stdout, "Elapsed time: %lf(ms)\n", elapsed_time);
int main()
{
unsigned int tm{10};
TIC
for (int i = 0; i < 1000; ++i) {
usleep(tm);
}
TOC
return 0;
}
執行結果如下:

執行過程:將終端定位到Linux_Code_Test/Samples_cplusplus目錄下,執行:./build.sh,然后進入到build目錄下,執行生成的執行文件即可。
GitHub: https://github.com/fengbingchun/Linux_Code_Test
總結
以上所述是小編給大家介紹的Linux下通過gettimeofday函數獲取程序段執行時間,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!