Linux下通過gettimeofday函數(shù)獲取程序段執(zhí)行時間【推薦】
在Linux下計算某個程序段執(zhí)行的時間一般使用gettimeofday函數(shù),此函數(shù)的聲明在sys/time.h文件中。此函數(shù)接收兩個結(jié)構(gòu)體參數(shù),分別為timeval、timezone.
兩個結(jié)構(gòu)體的聲明如下:
struct timeval { time_t tv_sec; /* seconds */ long tv_usec; /* microseconds */ }; struct timezone { int tz_minuteswest; int tz_dsttime; };
一般通過gettimeofday函數(shù)獲得當前時間時,第二個參數(shù)為nullptr。結(jié)構(gòu)體timeval中的tv_sec表示秒,tv_usec表示微秒。
matlab中通過tic(start a stopwatch timer)和toc(read the stopwatch timer)兩個函數(shù)來給出程序段所運行的時間,這里通過兩個宏TIC和TOC來實現(xiàn)。測試代碼如下:
#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; }
執(zhí)行結(jié)果如下:
執(zhí)行過程:將終端定位到Linux_Code_Test/Samples_cplusplus目錄下,執(zhí)行:./build.sh,然后進入到build目錄下,執(zhí)行生成的執(zhí)行文件即可。
GitHub: https://github.com/fengbingchun/Linux_Code_Test
總結(jié)
以上所述是小編給大家介紹的Linux下通過gettimeofday函數(shù)獲取程序段執(zhí)行時間,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對本站網(wǎng)站的支持!
版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。