您好,登錄后才能下訂單哦!
如何在Linux中使用gettimeofday函數獲取程序執行時間?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
在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目錄下,執行生成的執行文件即可。
Linux是一種免費使用和自由傳播的類UNIX操作系統,是一個基于POSIX的多用戶、多任務、支持多線程和多CPU的操作系統,使用Linux能運行主要的Unix工具軟件、應用程序和網絡協議。
看完上述內容,你們掌握如何在Linux中使用gettimeofday函數獲取程序執行時間的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。