编译原理学习笔记24——优化2

本文探讨了编译原理中的优化技术,重点关注循环优化,包括代码外提和强度削弱。循环优化旨在提高代码效率,通过删除归纳变量、变换循环控制条件、循环展开和合并来提升性能。代码外提涉及将循环不变的运算移到循环外部,而强度削弱则是通过转换运算以减少执行时间。这些方法对于提升程序运行效率至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编译原理学习笔记24——优化2

24.1 循环优化

优化的级别

  • 局部优化
  • 循环优化
    • 可能反复执行的代码序列
  • 全局优化

循环优化的措施

对循环中的代码,可以实行

  • 代码外提
  • 强度消弱
  • 删除归纳变量(变换循环控制条件)
  • 循环展开
  • 循环合并

24.2 代码外提

  • 所谓变量A在某点d的定值到达 另一点u(或称变量A的定值点 d到达另一点u),是指流图中 从d有一通路到达u且该通路上 没有A的其它定值
  • 循环不变运算: 对四元式A:=B op C,若B和C是常数,或者到 达它们的B和C的定值点都在循 环外
  • 把循环不变运算提到循环体外

在这里插入图片描述
查找循环中不变运算的算法
在这里插入图片描述
在这里插入图片描述
循环优化示例
在这里插入图片描述
在这里插入图片描述
外提的条件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码外提算法
在这里插入图片描述
循环优化示例
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

24.3 强度削弱

把程序中执行时间较长的运算转换为执行时间
较短的运算

强度消弱

  • 强度消弱通常是针对循环控制变量有线性关系 的变量赋值进行
  • 经过强度消弱后,循环中可能出现一些新的无 用赋值
  • 对于消弱下标变量地址计算的强度非常有效

删除归纳变量
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
删除归纳变量
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值