我正在尝试计算代码中的函数执行(需要花费一个多小时),而我正在使用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;
我做错了吗?
答案 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
???