繁体   English   中英

C ++计算执行时间错误

[英]C++ counting execution time error

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

难道我做错了什么?

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

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

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

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

这样做的另一种方法是:

#include <time.h>

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

我不确定100%,但是您只将t_end投给长双注吗?

不应该是:

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

要么

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

???

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM