c/c++计算程序运行时间

  在c/c++中经常需要获取某段程序的运行时间,那么如何来实现呢?

方式一:使用time函数

  使用time函数计算某段程序运行时间的代码如下:

time_t start_time;
time(&start_time);
...
time-consuming code
...
time_t end_time;
time(&end_time);
time_t duration = end_time - start_time;

但该方式只能获取以秒为单位的时间,如果想要获取更细粒度的时间,则需要使用其它的方法。

方式二:使用clock函数

  clock函数返回程序运行的CPU时钟数,使用clock函数统计程序段运行的时钟数,再用运行的时钟数除CPU每秒运行的时钟数,即可得到运行的时间。代码如下:

clock_t start_time = clock();
...
time_consuming code
...
clock_t end_time = clock();
double duration = double(end_time - start_time)/CLOCKS_PER_SEC;

其中,CLOCKS_PER_SEC表示CPU一秒钟的运行时钟数。该方式也有一定的限制条件,即若程序使用多核并行计算,则得出的时间不准确,统计的运行时钟数是所有核的总时钟数。

方式三:时间结构体timeval

  通过c语言中的时间结构体timeval,可以获取微秒级的时间。如下代码可以获取毫秒级的运行时间:

struct timeval tv;
gettimeofday(&tv,NULL);
long int start_time = tv.tv_sec * 1000 + tv.tv_usec/1000;
...
time consuming code
...
gettimeofday(&tv,NULL);
long int end_time = tv.tv_sec * 1000 + tv.tv_usec/1000;
long int duration = end_time - start_time;

方式四:chrono

  在C++11中可以考虑使用更高级的特性,chrono,这里就不做过多的介绍了。

猜你喜欢

转载自blog.csdn.net/b876144622/article/details/80517059