Linux下C++程序計時方法
最近簡單學習了下 Linux 下 C++ 程序計時的一些函數和方法,總結如下。沒啥 insight 了。
方法一:
如果是想統計某個程序的運行時間,那么可以使用
time ./a.out
方法二:
如果是想對某個函數或者語句進行計時,那么有別的方法。比如說, gettimeofday 函數。直接貼示例代碼:
#include <sys/time.h> void f() { //... } int main() { struct timeval t1, t2; gettimeofday(&t1, NULL); f(); gettimeofday(&t2, NULL); //那么函數f運行所花的時間為 //deltaT = (t2.tv_sec-t1.tv_sec) * 1000000 + t2.tv_usec-t1.tv_usec 微秒 return 0; }
不難看出, gettimeofday 只能精確到微秒;如果想精確到納秒呢?
方法三:
#include <time.h> void f() { //... } int main() { timespec t1, t2; clock_gettime(CLOCK_MONOTONIC, &t1); f(); clock_gettime(CLOCK_MONOTONIC, &t2); //那么f所花時間為 //deltaT = (t2.tv_sec - t1.tv_sec) * 10^9 + t2.tv_nsec - t1.tv_nsec 納秒 return 0; }
這里說的都是 wall clock ,如果想獲得 cpu 執行時間,以及了解 clock_gettime 參數的解釋和可能的取值,可以 man 一下。
來自: http://www.yebangyu.org/blog/2016/01/07/timingcprograminlinux/
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!