【发布时间】:2014-05-23 10:26:09
【问题描述】:
我正在尝试优化以下代码的夸张版本。
int a = startvalue1;
int b = startvalue2;
int c = startvalue3;
int ta = a + b;
int tb = b + c;
int tc = c + a;
int tta = ta * tb;
int ttb = tb * tc;
int ttc = tc * ta;
int finalvalue1 = tta - ttc;
int finalvalue2 = ttb - ttc;
int finalvalue3 = ttc + tta;
编译器会自动摆脱中介吗?如果没有,如果我摆脱它们,我的代码会运行得更快吗?
我已经分析了我的程序,我必须优化我的离散傅立叶变换。但是摆脱中介会很乏味,如果编译器要为我做这件事,我想避免它。
【问题讨论】:
-
当然。你唯一能做错的就是不自己检查这个,看看反汇编。
-
通常查看优化器对您的代码所做的事情的方法是查看生成的程序集。
-
问题是没有明确的是或否答案。这取决于编译器、编译器选项、周围的代码等……唯一确定的方法是查看程序集。
-
如果您想确定在您的环境中编译的代码以特定方式优化,那么您需要进行这项研究。一般的答案可能正确,也可能不正确,尤其是因为您只展示了一段代码,而不是全部。
标签: c++ optimization compiler-construction