C ++:编译器优化代码的方式有多少?

时间:2010-12-03 07:10:51

标签: c++ optimization compiler-construction compiler-optimization

我想知道编译器可以/优化我们用C ++编写的代码的所有可能方式(或者至少是流行的方法)?我也想知道如何完成优化(在每种情况下)!

到目前为止,我知道有两个优化,即。空基优化(EBO)和返回值优化(RVO)。还有什么?我听说过“const”优化,“未使用的变量”优化。它们是什么?

3 个答案:

答案 0 :(得分:6)

所有可能的方式?当然你在开玩笑。为此,请查看多年的编译器研究和实践。

有关具体示例,请在此处查找每个选项:http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html

答案 1 :(得分:5)

来自标准文档。第1.9节

  

4)这项规定有时被称为“假设”规则,因为一项实施可以自由地忽视本国际标准的任何要求   只要结果好像符合要求,只要可以从程序的可观察行为中确定。例如,   实际的实现不需要评估表达式的一部分,如果它可以推断出它的值没有被使用,并且没有副作用影响   产生了可观察的程序行为。

实际上,符合标准的编译器可以执行任何类型的优化,只要它产生所需的结果。

答案 2 :(得分:4)

令人难以置信的广泛,因为有许多优化,编译器编写者总是在考虑更多。它们有很多,有些针对运行时进行了优化,有些针对二进制大小进行了优化。许多也不是特定的C ++,一般编译器优化技术是针对许多不同语言的许多编译器/解释器实现的。

只是屈指可数:

更多信息: