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

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

我已经阅读了关于C ++中const-correctness的所有建议,并且它(部分)很重要,因为它有助于编译器优化代码。我从未见过的是关于编译器如何使用这些信息来优化代码的一个很好的解释,甚至连好书都没有解释幕后发生的事情。

例如,编译器如何优化声明为const的方法与不应该但应该是的方法。当你引入可变变量时会发生什么?它们会影响const方法的这些优化吗?


POPMUISE
浏览 469回答 3
3回答

郎朗坤

我认为const关键字主要用于编译检查程序语义,而不是用于优化。Herw Sutter在GotW#81文章中解释了为什么编译器在通过const引用传递参数时或者在声明const返回值时无法优化任何内容。原因是编译器无法确定引用的对象是否会被更改,即使声明为const:一个可以使用const_cast,或者某些其他代码可以在同一个对象上具有非const引用。然而,引用Herb Sutter的文章:只有一种情况说“const”可以真正意味着某种东西,那就是当对象在它们被定义的点被制成const时。在这种情况下,编译器通常可以成功地将这种“真正的const”对象放入只读存储器中[...]。本文还有很多内容,所以我鼓励您阅读它:在此之后您将更好地理解持续优化。

慕雪6442864

handwaving开始本质上,数据修复得越早,编译器就可以越多地绕数据的实际分配移动,确保管道不会停顿结束了
打开App,查看更多内容
随时随地看视频慕课网APP