编译原理——第十章 优化(第一部分) 王金伟 计算机与信息工程学院 天津师范大学 第10章 优化 优化:对程序进行各种等价变换,使得从变换后的程序出发,能生成更有效的目标代码。 10.1 概述 优化的目的是为了产生更高效的代码。由优化编译程序提供的对代码的各种变换必须遵循一定的原则: 等价原则:经过优化后不应改变程序运行的结果; 有效原则:使优化后所产生的目标代码运行时间较短,占用的存储空间较小; 合算原则:应尽可能以较低的代价取得较好的优化效果 优化的三个不同级别: 局部优化 循环优化 全局优化 优化的种类: 删除公用子表达式 代码外提 强度消弱 变换循环控制条件 合并已知量 复写传播 删除无用赋值 一个例子:C语言写的快速排序子程序 将输入的序列a[m..n]划分成两个非空子序列a[m..k]和a[k+1..n],使a[m..k]中任一元素的值不大于a[k+1..n]中任一元素的值。 递归求解:通过递归调用快速排序算法分别对a[m..k]和a[k+1..n]进行排序,直至序列长度为1。 一个例子:C语言写的快速排序子程序 void quicksort (m, n); int m, n; { int i, j; int v, x; if (n=m) return; /* fragment begins here*/ i=m-1; j=n; v=
原创力文档

文档评论(0)