龙书第九章总结9.1

这章主要讨论了代码的优化技术,主要是跨block的优化

局部优化

对每个代码的block内部进行优化,只涉及内部去重等

Global common subexpression

subexpression已经在先前的块被计算过了,且到当前块之前不会改变值,这个时候当前块如果重复计算就可以省去

copy propagation

在消除相同表达式的时候,如果遇到分支的情况,如左图,这时候可能不知道c应该等于a还是b(计算的分支不同),这时用右边的写法
在这里插入图片描述

Dead code

永远不会计算的语句

Code motion

这个对于循环语句进行处理,被循环内部与循环独立的语句拿到循环外部,这样可以极大的减少计算量

limit- 2 会不断计算,拿出循环会比较好
在这里插入图片描述

Induction Variables and Reduction in Strength

Induction Variables ,循环变量(随循环不断变化的变量),比如

i = i+1
t = 4*i

可以把他转化为较为简单的计算(乘法换加法)

t = t+4

这称为Reduction in Strength

在操作时,最好从内循环开始考虑。多个循环变量时,一般可以转化为一个唯一的循环变量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值