【发布时间】:2015-06-15 21:50:23
【问题描述】:
我有一个程序,我想计算它的执行时间:
#include <iostream>
#include <boost/chrono.hpp>
using namespace std;
int main(int argc, char* const argv[])
{
boost::chrono::system_clock::time_point start = boost::chrono::system_clock::now();
// Intructions to burn time
boost::chrono::duration<double> sec = boost::chrono::system_clock::now() - start;
cout <<"---- time execution is " << sec.count() << ";";
return 0;
}
例如一次运行后的结果:
----时间执行为0.0223588
这个结果不是很明显,因为 CPU 时间是包括在内的。
我有一个想法,通过测试多次运行并达到平均水平来避免 CPU 争用。
问题是:
如何存储上一次运行的时间值?
我们可以通过文件做到这一点吗?
如何在每次运行后增量计算平均值?
欢迎您的建议/伪代码。
【问题讨论】:
-
如果您使用的是 unix 操作系统并使用 bash 作为 shell,您可以将程序调用为
time ./[progexe]并将其 sys 时间输出用作程序的 cputime。 -
这个问题非常广泛,归结为“我如何正确构建基准?”而且我对您尚未对该主题进行任何值得注意的研究感到不满意。
-
@LightnessRacesinOrbit:嗯,这就是应该问的问题。实际提出的问题,关于跨次运行的平均结果,是一个更合适的范围。
-
@Lightness Races in Orbit 为什么你认为这个问题超出了范围?