C++计算执行时间错误

发布于 2024-09-06 18:20:05 字数 317 浏览 7 评论 0原文

我正在尝试计算代码中函数的执行情况(需要一个多小时),并且我正在使用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;

我做错了什么吗?

I'm trying to count the execution of function in my code (that takes over an hour), and I'm using clock(), but I'm getting some errors, since the time calculated is negative. I'm doing like this:

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;

Am I doing something wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

撕心裂肺的伤痛 2024-09-13 18:20:05

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

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

CLOCKS_PER_SEC is 1000000 and clock() returns a signed 32-bit value so will go negative after about 36 minutes and wrap after about 72 minutes.

See http://www.guyrutenberg.com/2007/09/22/profiling-code-using-clock_gettime for details on how to measure long execution times.

等待我真够勒 2024-09-13 18:20:05

您是否检查过以确保对 clock() 的调用均未返回 -1?

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

另一种方法是:

#include <time.h>

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

Have you checked to make sure neither call to clock() is returning -1?

The clock() function returns the
processor time since the program
started, or - 1 if that information is
unavailable.

Another approach of doing this is:

#include <time.h>

time_t start, end;
time(&start);
algorithm->execute();
time(&end);
double diff = difftime(end, start);
北城孤痞 2024-09-13 18:20:05

我不是 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

???

I'm not 100% sure, but do you cast only t_end to a long double ???

Shouldn't it be:

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

or

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

???

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文