C ++计算执行时错误

时间:2010-06-19 20:55:36

标签: c++ time count execution

我正在尝试计算代码中的函数执行(需要花费一个多小时),而我正在使用clock(),但是我遇到了一些错误,因为计算的时间是负数。我这样做:

long double time;
clock_t start, t_end;

t_start = clock();
algorithm->execute();
t_end = clock();

time = ((long double) t_end - t_start) / CLOCKS_PER_SEC;

cout << time << endl;

我做错了吗?

3 个答案:

答案 0 :(得分:2)

CLOCKS_PER_SEC为1000000且clock()返回一个带符号的32位值,因此在大约36分钟后变为负值,在大约72分钟后换行。

有关如何衡量较长执行时间的详细信息,请参阅http://www.guyrutenberg.com/2007/09/22/profiling-code-using-clock_gettime

答案 1 :(得分:1)

您是否检查过以确保对clock()的呼叫都没有返回-1?

  

clock()函数返回   自程序以来的处理器时间   开始,或 - 如果该信息是 - 1   不可用。

这样做的另一种方法是:

#include <time.h>

time_t start, end;
time(&start);
algorithm->execute();
time(&end);
double diff = difftime(end, start);

答案 2 :(得分:0)

我不是百分百肯定,但你是否只将t_end投射到一个长双???

不应该是:

((long double)t_end - (long double)t_start)/CLOCKS_PER_SEC

((long double)(t_end - t_start))/CLOCKS_PER_SEC

???