[英]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.