aru*_*pal 3 c++ performance const
在C++中,如果变量的值在整个程序VS中分配后永远不会改变如果将该变量设为const,那么可执行代码更快?编译器如何优化案例1中的可执行代码?
聪明的编译器可以理解变量的值永远不会改变,从而优化相关代码,即使const程序员没有显式关键字也是如此.
至于你的第二个问题,当你把变量标记为const,那么可能会发生以下情况:"编译器可以通过不向这个变量提供存储来优化掉这个const而不是将它添加到符号表中.所以,后续的读取只需要间接到符号表而不是从内存中获取值的指令".阅读更多内容const在C/C++中提供什么样的优化?(如果有的话).
我说可能,因为const并不意味着这是一个肯定的常量表达,这可以通过使用constexpr而不是,正如我解释的那样.
通常,在使用const关键字时,您应该考虑更安全的代码,而不是更快的代码.因此,除非您为更安全和更易读的代码执行此操作,否则您可能会成为过早优化的受害者.
奖金:
C++提供了constexpr关键字,允许程序员将变量标记为标准调用常量表达式.常量表达式不仅仅是常量.
阅读更多有关`constexpr`和`const`之间的区别以及何时应该在C++ 11中使用constexpr功能?
PS:Constness阻止移动,所以使用const太过宽松可能会使你的代码执行得更慢.
| 归档时间: |
|
| 查看次数: |
1088 次 |
| 最近记录: |