普遍有用的优化
概念
编译器在应用优化时必须遵守基本约束:不能改变程序的语义和行为。这意味着编译器的优化能力是有限的——它必须保守地假设各种最坏情况。
保守优化的局限性
- 编译器无法判断函数是否具有
- 编译器不能假设
- 许多有效的优化需要程序员手动完成
分类
普遍有用的优化分为两类:
- 与机器无关的优化:适用于各种处理器
- 与机器相关的优化:利用特定处理器特性
其中代码移动、强度削弱、共享公用子表达式等是编译器可以自动执行的优化,但由于保守性限制,程序员往往需要显式地编写优化代码。
优化等级
GCC提供不同的优化级别(如 -O1, -O2, -O3),级别越高应用的优化越多,但也可能增加代码体积或调试难度。
相关笔记:
链接到
- 上一个知识点:无(本章第一个知识点)
- 下一个知识点:5.2 代码移动