编译器做了什么?
1. 语言翻译。将一种语言(人能理解的)翻译成另一种语言(机器能理解并执行的),比如将c++代码翻译成x86平台上的目标代码。
2. 代码优化。比如让代码跑的更快,更节能,更鲁棒。
编译器如何优化并提升性能的?
Execution time = Operation count * Machine cycles per operation
1. 最小化operation数目
2. 用更简单的操作替换昂贵的操作,比如用1-cycle shift替换4-cycle multiplication。
3. 最小化cache丢失率,也即提高cache命中率。
4. 并行计算。单线程指令调度,多线程并行计算。
编译器结构?
全部的优化工作在“intermediate form"(中间表示)上进行。这样的编译器结构很明显的优点是在多语言和多目标平台上,简单便携的移植部署。
编译器优化的主要成分
1. Formulate optimization problem
2. Representation
3. Analysis
4. Code Transformation
5. Experimental Evaluation