在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函數獲取程序段執行時間,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!
新聞熱點
疑難解答
圖片精選