编译器 - 什么是编译优化器?

本文介绍了优化编译器的工作原理和分类,包括Peephole、Local、Global、Loop等优化,以及影响优化的因素如机器架构、代码用途。编译器优化旨在减少执行时间、内存开销,通过避免冗余、减少跳转、利用内存层级等方式提升性能。

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

说明:本文参考Wikipedia的文章形成。感兴趣可以参见英文链接。

0.什么是一个Optimizing Compiler ?

Optimizing Compiler (后文以“优化编译器”代之) 就是试图最小化或最大化某些可执行文件属性的编译器。[1]

优化可能的方向

  • 执行时间
  • 内存开销
  • 执行文件大小
  • 低功耗

后两者经常会出现在嵌入式程序开发中。笔者曾经参与过相关的开发,品尝过抢code size的滋味(在项目刚开始写一些相对占size更大的code, 但功能没问题的,先把size占了,等后面不够了,把这段代码优化一下,size又挤出来了)

优化编译器常用的优化实现形式?

它通常被实现为一个优化转换的序列,该序列将会把程序转换成语义上等价的一个输出程序。该程序执行会更快或消耗更少的资源。(以LLVM为例,IR级别的优化就是一个或多个PassManager中代表的所有Pass集合)

1.优化的分类

根据优化所作用的域来分类,可以有如下类型

1 Peephole优化

通过检查一些相邻的指令(像通过一个小孔一样窥视整体代码)来看,它们是否可以由另外一个或一组更短的指令代替。</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值