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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!