“ const”需要付出代价吗?
|
编译器有时可能会利用某些“变量”是用于优化的常量这一事实,因此,通常可以使用“ const”关键字,但这是一个好主意,但是有一个折衷方案吗?
简而言之,是否存在使用\“ const \”可能会使代码变慢(甚至一点点)的情况?
没有找到相关结果
已邀请:
4 个回复
蕾跨立锌煤
关键字仅在编译时使用。编译代码后,变量只是内存中的地址,没有任何特殊保护。 但是存在一些区别-全局
变量将放置在
段中,而不是
(如果已初始化)或bss(如果未初始化)。如果对“ 2”段的处理不同,例如从NOR闪存(而不是RAM)就地执行,则可能会有所不同。局部“ 0”变量与常规变量一起放在堆栈中,因此应该没有区别。 就像Bestsss所说的那样,如果变量是一个常量,则可能无法进行某些编译时优化。我什么都想不起来(尤其是在纯C语言中),但是从理论上讲是有可能的。 编辑: 以下代码在第二段中说明了这一点:
} 在Visual Studio 2010中,结果如下(请注意const和non-const全局变量之间的巨大差异): 变量:0x002af444 常量变量:0x002af440 参数:0x002af43c 全局常量:0x00a02104 全局非常量:0x00a03018
佃蒜狗掂哥
在这里,这些变量看起来像位于相邻地址。 在许多体系结构上,它们将相互远离,因为\“ const \”变量将放置在运行时具有写保护的特殊段中。因此,对这些变量的交错访问将导致错过更多的cheche错误,这可能会大大降低程序运行速度。
擅香
氏脑