建议的估算时间的方法是使用clock()函数,然后将cpu周期的计数除以周期/秒。
我的问题是我尝试运行的程序需要花费很多时间(以小时为单位)。这意味着clock()函数(返回long int)返回一个垃圾值(因为max long int对此不够大)
任何建议(除了估计内部循环的时间并添加它们之外)?
long t1 = clock();
function();
long t2=clock();
time = ((double)t2 - t1) / CLOCKS_PER_SEC
答案 0 :(得分:5)
如果你在Linux / Unix下运行它,你可以说:
time my_process
答案 1 :(得分:3)
从百分比误差的角度考虑问题。
如果您的程序需要数小时才能运行(假设4小时......或14,400秒),则1/2%错误为72秒,或稍微超过一分钟。
换句话说,要获得1/2的百分之一的准确答案,您只需要到最近的分钟。假设手持式秒表可以在一秒钟内,甚至1/10秒内,你的错误将会非常小。
我的观点是,您只需使用秒计时器或手持式秒表即可准确测量您的程序。
答案 2 :(得分:1)
如果程序长时间运行,则亚秒级精度可能不是特别重要。在这种情况下,为什么不拨打time()
?
答案 3 :(得分:0)
Boost timers效果很好。
计时器库提供一个用于测量已用时间的计时器类,一个用于报告已用时间的progress_timer类,以及一个用于显示目标进度指示的progress_display类。
答案 4 :(得分:0)
函数gettimeofday()
#include <sys/time.h>
int gettimeofday(struct timeval *tv, NULL);
函数gettimeofday()和settimeofday()可以获得时间。 tv参数是struct timeval(如中所述):
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
time_t至少为32位,因此可以存储数小时。
答案 5 :(得分:0)
如果精度(由queryPerformanceTimer等win调用给出)并不重要,我会使用getTimeofTheDay方法(由@osgx建议)。
答案 6 :(得分:0)
#include <time.h>
int main()
{
clock_t t1,t2;
t1=clock();
//write your code here
t2=clock();
float runningTime ((float)t2-(float)t1);
//runningTime contains the time
return 0;
}