【发布时间】:2012-03-09 21:48:52
【问题描述】:
例如,如果我有:
if(x
2*0.025是否每次都被计算?还是0.05被替换,这样乘法运算就不必每次都运行?换句话说,使用
0.05比使用2*0.025更有效吗?
【问题讨论】:
标签: c++ processing-efficiency performance
例如,如果我有:
if(x
2*0.025是否每次都被计算?还是0.05被替换,这样乘法运算就不必每次都运行?换句话说,使用
0.05比使用2*0.025更有效吗?
【问题讨论】:
标签: c++ processing-efficiency performance
我知道的每个编译器都实现了constant folding,即在编译时计算常量表达式,所以没有区别。然而,该标准并未强制要求:
常量表达式可以在翻译期间而不是运行时进行计算,因此可以在常量可能存在的任何地方使用。
您可以使用某些编译器显式禁用此优化。例如,-frounding-math 禁用 gcc 中浮点表达式的常量折叠。
【讨论】:
预计算常量表达式。
【讨论】: