我在这里找到了一些测量执行时间的代码。
http://www.dreamincode.net/forums/index.php?showtopic=24685
然而,对于对system()的调用似乎不起作用。我想这是因为执行跳出了当前进程。
clock_t begin=clock();
system(something);
clock_t end=clock();
cout<<"Execution time: "<<diffclock(end,begin)<<" s."<<endl;
那么
double diffclock(clock_t clock1,clock_t clock2)
{
double diffticks=clock1-clock2;
double diffms=(diffticks)/(CLOCKS_PER_SEC);
return diffms;
}
然而,这总是返回0秒...有没有其他方法可以工作?
此外,这是在Linux中。
编辑:还要补充的是,执行时间是几个小时的数量级。所以准确性并不是问题。
谢谢!
getrusage
可以以微秒分辨率测量第一个。gettimeofday
可以以微秒分辨率测量第二个。如果您的进程休眠(等待输入...),getrusage
不会考虑到这一点,它也不会考虑其他进程所花费的时间。所以我猜如果任务是 I/O,您需要gettimeofday
,如果是 CPU 绑定,则需要getrusage
。不确定是否正确。 - Johannes Schaub - litb