美文网首页
编译器笔记53-代码优化-自然循环及其识别

编译器笔记53-代码优化-自然循环及其识别

作者: 衣忌破 | 来源:发表于2020-03-19 17:11 被阅读0次

自然循环(Natural Loops)

自然循环是一种适合于优化的循环

  • 从程序分析的角度来看,循环在代码中以什么形式出现并不重要,重要的是它是否具有易于优化的性质。

  • 自然循环是满足以下性质的循环

  1. 有唯一的入口结点,称为首结点(header)。首结点支配循环中的所有结点,否则,它就不会成为循环的唯一入口。
  2. 循环中至少有一条 返回首结点的路径,否则,控制就不可能从“循环”中直接回到循环头,也就无法构成循环。
  • 非自然循环的例子
非自然循环的例子.png

自然循环的识别

自然循环的识别.png

算法:构造一条回边的自然循环

构造一条回边的自然循环.png

自然循环的一个重要性质:除非两个自然循环的首结点相同,否则,它们或者互不相交,或者一个完全包含(嵌入)在另外一个里面

例.png

如果两个循环具有相同的首结点,那么很难说哪个是最内循环。此时把两个循环合并

循环合并.png

相关文章

  • 编译器笔记53-代码优化-自然循环及其识别

    自然循环(Natural Loops) 自然循环是一种适合于优化的循环 从程序分析的角度来看,循环在代码中以什么形...

  • python循环代码优化笔记

    摘抄于腾讯技术知乎专栏:https://zhuanlan.zhihu.com/p/68128557该篇仅做个人复习...

  • iOS的性能优化

    1、ipa包体积优化 1.1 编译配置优化:编译器代码层面优化Optimize Level;Bitcode(较难...

  • 优化Javascript代码性能

    优化JS代码性能 优化循环 我们来看一段段代码 这段代码循环footballTeam中的members数组,然后打...

  • 编译器优化部分代码

    我们简单写一些代码看编译器优化前后的对比。编译器没有优化时 在Build Setting 搜索optimizati...

  • 编译器想做什么

    编译器就程序员写的代码变成CPU能理解机器代码。编译器的指令重排指开启编译器优化后,在不影响代码行为的前提下,代码...

  • 编译器前端和后端

    编译器粗略分为词法分析,语法分析,类型检查,中间代码生成,代码优化,目标代码生成,目标代码优化。把中间代码生成及之...

  • Flutter 前端编译器编译流程分析

    1. 前端编译器和后端编译器的区别 编译流程粗略分为词法分析、语法分析、类型检查、中间代码生成、代码优化、目标代码...

  • 实战001-提煤单明细查询

    一、code 二、优化代码 2.1、优化在循环中发SQL 优化后代码 二、SQL 二、使用 Profile 分析 ...

  • 编译原理——寄存器

    •代码生成是编译器的最后阶段。代码生成器通过前端产生的中间表示法或者通过代码优化器在代码优化阶段,映射到目标程序中...

网友评论

      本文标题:编译器笔记53-代码优化-自然循环及其识别

      本文链接:https://www.haomeiwen.com/subject/nimlyhtx.html