0

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

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;

难道我做错了什么?

4

3 回答 3

2

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

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

于 2010-06-19T21:00:40.367 回答
1

您是否检查过以确保两个调用都没有clock()返回-1?

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

这样做的另一种方法是:

#include <time.h>

time_t start, end;
time(&start);
algorithm->execute();
time(&end);
double diff = difftime(end, start);
于 2010-06-19T20:59:59.243 回答
0

我不是 100% 确定,但是您是否只将 t_end 转换为 long double ???

不应该是:

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

或者

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

???

于 2010-06-19T21:00:34.767 回答