我有一些用c ++编写的代码来模拟CPU的预取器。在代码中我有一些看起来像这样的定义
#define x 5
...
for(int i = 0; i < x; i++)
...
在模拟结束时,模拟器输出平均访问时间,该时间衡量预取器的效果。预取器的性能取决于x和其他一些类似的定义。
我希望有一个程序可以更改x,重新编译新代码,运行它,查看值,并根据模拟访问时间的变化重复该过程。
有没有人知道一种简单的方法,而不是手动更改值?
编辑:我想我需要澄清一点,我不想编写一个学习算法,因为我从来没有这样做过,可能不会像其他人那样做。答案 0 :(得分:0)
我猜你当前的程序看起来像这样
int main() {
#define x 5
<do the simulation>
cout << "x=" << x << " time=" << aat << endl;
相反,您可以创建一个模拟函数,它将x作为显式参数并返回平均访问时间...
double simulate( int x ) {
<do simulation>
}
从主
中调用它 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的机器就会发生在主要的。
但是......如果你正在编写一个模拟CPU预取的程序,我不禁想到你已经完全了解了这一切。我真的不明白你为什么要使用编译器来改变模拟参数。