避免 CPU 争用
Avoiding CPU Contention
我有一个程序,我想计算它的执行时间:
#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 争用。
问题是:
如何存储前一个运行的时间值?
我们可以通过文件做到这一点吗?
每次运行后如何递增计算平均值?
欢迎您提出建议/伪代码。
您可以使用 2 个参数通过命令行传递平均值:当前平均值和执行的迭代次数。
然后:
NewAverage = ((CurrentAverage*N) + CurrentValue) / (N+1);
其中 N 是迭代次数。
我有一个程序,我想计算它的执行时间:
#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 争用。
问题是:
如何存储前一个运行的时间值?
我们可以通过文件做到这一点吗?
每次运行后如何递增计算平均值?
欢迎您提出建议/伪代码。
您可以使用 2 个参数通过命令行传递平均值:当前平均值和执行的迭代次数。 然后: NewAverage = ((CurrentAverage*N) + CurrentValue) / (N+1); 其中 N 是迭代次数。