如何优化代码中的参数?

时间:2015-02-26 03:23:36

标签: c++ optimization genetic-algorithm recompile hill-climbing

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

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

在模拟结束时,模拟器输出平均访问时间,该时间衡量预取器的效果。预取器的性能取决于x和其他一些类似的定义。

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

有没有人知道一种简单的方法,而不是手动更改值?

编辑:我想我需要澄清一点,我不想编写一个学习算法,因为我从来没有这样做过,可能不会像其他人那样做。

1 个答案:

答案 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预取的程序,我不禁想到你已经完全了解了这一切。我真的不明白你为什么要使用编译器来改变模拟参数。