转载

Linux下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 一下。

正文到此结束
Loading...