我想知道编译器可以/优化我们用C ++编写的代码的所有可能方式(或者至少是流行的方法)?我也想知道如何完成优化(在每种情况下)!
到目前为止,我知道有两个优化,即。空基优化(EBO)和返回值优化(RVO)。还有什么?我听说过“const”优化,“未使用的变量”优化。它们是什么?
答案 0 :(得分:6)
所有可能的方式?当然你在开玩笑。为此,请查看多年的编译器研究和实践。
有关具体示例,请在此处查找每个选项:http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
答案 1 :(得分:5)
来自标准文档。第1.9节,
4)这项规定有时被称为“假设”规则,因为一项实施可以自由地忽视本国际标准的任何要求 只要结果好像符合要求,只要可以从程序的可观察行为中确定。例如, 实际的实现不需要评估表达式的一部分,如果它可以推断出它的值没有被使用,并且没有副作用影响 产生了可观察的程序行为。
实际上,符合标准的编译器可以执行任何类型的优化,只要它产生所需的结果。
答案 2 :(得分:4)
令人难以置信的广泛,因为有许多优化,编译器编写者总是在考虑更多。它们有很多,有些针对运行时进行了优化,有些针对二进制大小进行了优化。许多也不是特定的C ++,一般编译器优化技术是针对许多不同语言的许多编译器/解释器实现的。
只是屈指可数:
更多信息: