为了账号安全,请及时绑定邮箱和手机立即绑定

C ++中的常量和编译器优化

C ++中的常量和编译器优化

C++
POPMUISE 2019-08-19 11:03:42
C ++中的常量和编译器优化我已经阅读了关于C ++中const-correctness的所有建议,并且它(部分)很重要,因为它有助于编译器优化代码。我从未见过的是关于编译器如何使用这些信息来优化代码的一个很好的解释,甚至连好书都没有解释幕后发生的事情。例如,编译器如何优化声明为const的方法与不应该但应该是的方法。当你引入可变变量时会发生什么?它们会影响const方法的这些优化吗?
查看完整描述

3 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

我认为const关键字主要用于编译检查程序语义,而不是用于优化。

Herw Sutter在GotW#81文章中解释了为什么编译器在通过const引用传递参数时或者在声明const返回值时无法优化任何内容。原因是编译器无法确定引用的对象是否会被更改,即使声明为const:一个可以使用const_cast,或者某些其他代码可以在同一个对象上具有非const引用。

然而,引用Herb Sutter的文章:

只有一种情况说“const”可以真正意味着某种东西,那就是当对象在它们被定义的点被制成const时。在这种情况下,编译器通常可以成功地将这种“真正的const”对象放入只读存储器中[...]。

本文还有很多内容,所以我鼓励您阅读它:在此之后您将更好地理解持续优化。


查看完整回答
反对 回复 2019-08-19
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

handwaving开始

本质上,数据修复得越早,编译器就可以越多地绕数据的实际分配移动,确保管道不会停顿

结束了


查看完整回答
反对 回复 2019-08-19
  • 3 回答
  • 0 关注
  • 468 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信