Linux下C++程序計時方法

jopen 8年前發布 | 12K 次閱讀 Linux C/C++開發 C/C++

最近簡單學習了下 LinuxC++ 程序計時的一些函數和方法,總結如下。沒啥 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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!