美文网首页
编译器优化

编译器优化

作者: _涼城 | 来源:发表于2020-09-12 17:04 被阅读0次

Build Setting -> 搜索 Optimization Level

Optimization Level.png

指定被编译代码的执行速度和二进制文件大小的优化程度:

  • None[-O0]:
    在这种设置下, 编译器的目标是降低编译消耗,保证调试时输出期望的结果。程序的语句之间是独立的:如果在程序的停在某一行的断点出,我们可以给任何变量赋新值抑或是将程序计数器指向方法中的任何一个语句,并且能得到一个和源码完全一致的运行结果。
  • Fast[-O1]
    大函数所需的编译时间和内存消耗都会稍微增加。在这种设置下,编译器会尝试减小代码文件的大小,减少执行时间,但并不执行需要大量编译时间的优化。在苹果的编译器中,在优化过程中,严格别名,块重排和块间的调度都会被默认禁止掉。
  • Faster[-O2]
    编译器执行所有不涉及时间空间交换的所有的支持的优化选项。在这种设置下,编译器不会进行循环展开、函数内联或寄存器重命名。和‘Fast[-O1]’项相比,此设置会增加编译时间和生成代码的性能。
  • Fastest[-O3]:
    在开启‘Fast[-O1]’项支持的所有优化项的同时,开启函数内联和寄存器重命名选项。这个设置有可能会导致二进制文件变大。
  • Fastest, Smallest[-Os]:
    这个设置开启了‘Fast[-O1]’项中的所有不增加代码大小的优化选项,并会进一步的执行可以减小代码大小的优化。
  • Fastest, Aggressive Optimizations[-Ofast]:
    这个设置开启了“Fastest[-O3]”中的所有优化选项,同时也开启了可能会打破严格编译标准的积极优化,但并不会影响运行良好的代码。

相关文章

  • LLVM

    一、编译器 性能优化:启动优化、界面优化、架构优化 编译型语言:OC(编译器是clang)、C(编译器可以直接执行...

  • Linux 下如何绕过编译器优化

    本文首次发表在 Linux 下如何绕过编译器优化 有同学在群里聊到编译器优化的事情,很多时候期望编译器默认做优化,...

  • JMM造成指令重排的原因

    1、编译器优化 2、Processor 优化(流水线) 3、MESI缓存优化

  • iOS逆向之OC反汇编(上)

    本文主要讲解编译器的优化以及指针的汇编 编译器优化 设置 可在项目的BuildSetting->Optimizat...

  • 内联函数(Inline Function)

    场景:如果开启了编译器优化(Release模式默认会开启优化),编译器自动将某些函数变成内联函数 调用方式如下: ...

  • 编译器优化部分代码

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

  • iOS的性能优化

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

  • @inline inout

    内联函数 如果开启了编译器优化(Release模式默认会开启优化),编译器会自动将某些函数变成内联函数.即将函数调...

  • 晚期(运行期)优化

    HotSpot的即时编译器 解释器与编译器 编译对象与触发条件 编译过程 编译优化技术 如果还对其他的经典编译优化...

  • JVM中锁的优化策略

    即时编译器优化技术有很多种,JVM一书中介绍了4种重要的优化技术。 下面我们来聊一聊关于即时编译器其余的优化技术之...

网友评论

      本文标题:编译器优化

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