-3

我有一些用 C++ 编写的代码,用于模拟 CPU 的预取器。在代码中,我有一些看起来像这样的定义

#define x 5
...
for(int i = 0; i < x; i++)
...

在模拟结束时,模拟器输出平均访问时间,这是预取器执行情况的衡量标准。预取器的性能取决于 x 和其他一些类似的定义。

我想要一个更改 x 的程序,重新编译新代码,运行它,查看值,并根据模拟访问时间的变化重复该过程。

有谁知道不手动更改值的简单方法?

编辑:我想我需要澄清一下,我不想编写学习算法,因为我从来没有做过,而且可能做不到和其他人一样好。

4

1 回答 1

0

我猜你当前的程序看起来像这样

 int main() {
 #define x 5
 <do the simulation>
 cout << "x=" << x << " time=" << aat << endl;

相反,您可以创建一个模拟函数,将 x 作为显式参数并返回平均访问时间......

double simulate( int x ) {
    <do simulation>
 }

并从 main 调用它

 int main() {
   x= initial x value
   While ( necessary ) {
     Double aat = simulate(x)
     Cout << "x=" << x << " time=" << aat << endl;
     x = <updated x according to some strategy>

这样,您学习 x 的机器学习就发生在 main 中。

但是......如果您正在编写一个程序来模拟 CPU 预取,我不禁认为您已经非常了解这一切。我真的不明白你为什么首先使用编译器来更改模拟参数。

于 2015-02-26T06:51:37.060 回答