【问题标题】:How do I optimize parameters in my code?如何优化代码中的参数?
【发布时间】:2015-04-28 07:49:09
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 只需编写一个 shell 脚本来执行此操作...将 #define x 放入单独的包含文件中。让你的 shell 脚本重新生成文件
  • @thang 但是我需要将一些机器学习算法编程到一个 shell 脚本中,我不想显得太懒惰,但这似乎需要做很多工作
  • 如果对x 的更改涉及机器学习,那么x 不应该是#define。它应该是可变的,并且应该封装您现有的所有代码,以便可以使用不同的x值多次调用它。
  • 老实说,我并不是说这是侮辱...如果您对此有疑问,那么我质疑您的模拟可能有多准确。

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


【解决方案1】:

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

 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 预取,我不禁认为您已经非常了解这一切。我真的不明白您为什么首先使用编译器来更改模拟参数。

【讨论】:

    猜你喜欢
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多