【问题标题】:Does the product of two constants get computed every time it is executed?每次执行时都会计算两个常数的乘积吗?
【发布时间】:2012-03-09 21:48:52
【问题描述】:

例如,如果我有:

if(x 

2*0.025 是否每次都被计算?还是 0.05 被替换,这样乘法运算就不必每次都运行?

换句话说,使用0.05 比使用2*0.025 更有效吗?

【问题讨论】:

    标签: c++ processing-efficiency performance


    【解决方案1】:

    我知道的每个编译器都实现了constant folding,即在编译时计算常量表达式,所以没有区别。然而,该标准并未强制要求:

    常量表达式可以在翻译期间而不是运行时进行计算,因此可以在常量可能存在的任何地方使用。

    您可以使用某些编译器显式禁用此优化。例如,-frounding-math 禁用 gcc 中浮点表达式的常量折叠。

    【讨论】:

      【解决方案2】:

      预计算常量表达式。

      【讨论】:

        猜你喜欢
        • 2014-08-11
        • 1970-01-01
        • 2013-04-22
        • 2022-12-09
        • 2023-03-05
        • 1970-01-01
        • 1970-01-01
        • 2018-10-10
        相关资源
        最近更新 更多