在c/c ++中访问const变量的速度

The*_*vat 10 c c++ optimization performance

访问const变量的速度是否比非const变量快?我想知道是否值得使用const更多作为优化程序的一步.

iam*_*ind 16

如果该值是一个编译时间常数(例如数字,enum,const ,constexpr有时在C + + 11等),则是它们可以被相对于其他的变量访问更快.它们甚至可以放在代码段中.

然而,任何情况都不是这样const:

const int x = 5;  // can be faster
const int c = foo(); // normal non-modfiable variable, normal speed
Run Code Online (Sandbox Code Playgroud)

从示例中可以看出,所有不可修改的变量都不是编译时常量.


Huc*_*ker 5

你的问题的答案可能是.

正如Bjorn指出的那样,这个问题只能通过仔细的基准测试来解决,因为有太多架构特定的原因,为什么答案可能是肯定的或不是.

以下是基准测试的StackOverflow参考:

如果您正在处理速度很重要的项目,那么真正了解编译器正在做什么以及它如何影响速度的唯一方法是读取生成的程序集并执行仔细的基准测试.理解编译器可以做什么并不合理.如果您正在使用嵌入式系统,示波器是一种很好的计时方式,在具有更多资源的机器上,操作系统提供的高分辨率计时器非常有用.