Optimization Level - 优化等级

本文详细介绍了编译器中的优化级别设置,包括None、Fast、Faster和Fastest四个等级,并解释了不同优化级别对代码性能的影响及可能产生的副作用。

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

Optimization Level 应该是编译器的优化程度。   
比较早期的时候,硬件资源是比较缺乏的。为了提高性能,开发编译器的大师们,都会对编译器(从c到汇编的编译过程)加上一定的优化策略。优化后的代码效率比较高,但是可读性比较差,且编译时间更长。 
优化是指编译器一级的措施,与机器指令比较接近,所以很可能会导致硬件不兼容,进而产生了你目前遇到的软件装不上的问题。 
他是编译器的行为,与你代码理论上不相关的。 苹果的检查应该是检查你的代码一级的规范程度,隐私侵权相关的问题。 应该是与编译的过程是无关的。请放心。 


Build Settings -> Apple LLVM 7.0 - Code Generation 下

Optimization Level可以设置代码的优化等级。

None:不优化。[-O0]与此设置,编译器的目标是降低成本的编译和调试产生预期的结果。语句是独立的:如果你停止程序语句之间有一个断点,然后您可以指定一个新值的任何变量或任何其他声明改变程序计数器的功能和得到你期望的结果从源代码。

Fast:优化编译需要更多的时间,和更多的内存大的功能。[-O,O1]与此设置,编译器试图减少代码大小和执行时间,没有执行任何优化,需要大量的编译时间。在苹果的编译器,严格的混叠,阻挡重新排序,并内嵌调度优化时默认是禁用的。

Faster:编译器执行几乎所有支持优化,不涉及space-speed权衡。[-O2]与此设置,编译器不执行循环展开或内联函数,或寄存器重命名。相比“快速”的设置,该设置增加编译时间和生成的代码的性能。

Fastest:打开“更快”指定的优化设置,也取决于函数内联和寄存器重命名选项。此设置可能会导致一个更大的二进制。

Fastest [-O3],最小的优化尺寸。这个设置允许所有“更快”的优化通常不增加代码大小。它还旨在减少代码的大小进行进一步的优化。

### MDK 编译器优化等级概述 MDK 编译器提供了多种优化等级,这些等级允许开发者根据项目需求调整代码的性能、大小以及调试便利性之间的平衡。不同的优化等级会影响最终二进制文件的质量和编译过程中的资源消耗。 #### 不同优化等级的效果 最低级别的优化 `-O0` 关闭了大部分优化措施,在这种模式下可以获得最佳的调试体验并保持源码与机器指令之间的一致性[^3]。随着优化级别的提升至 `-O1`, `-O2`, 和最高级 `-O3`,编译器会在不显著增加复杂度的前提下逐步引入更多类型的优化技术,从而改善运行效率或减少目标平台上的存储占用量[^4]。 对于大多数应用而言,默认设置 (`-default`) 已经能够提供良好的综合表现,并且其行为类似于 `-O2` 级别的优化效果。然而当追求极致性能时,则可以考虑采用更高级别的配置;而如果侧重于快速迭代开发或是需要深入分析程序内部运作情况的话,则建议选用较低甚至关闭所有优化选项以便更好地支持断点跟踪等功能[^2]。 #### 如何设置优化等级 在 Keil µVision IDE 中更改优化参数非常直观: 1. 打开工程属性窗口; 2. 寻找 "C/C++" 或者特定语言标签页下的 “Optimization” 字段; 3. 使用下拉菜单选择所需的优化级别,如 `None (-O0)` , `Size (-Os)`, `Speed (-Ofast)` 等预定义组合之一; 4. 应用修改后重新构建整个解决方案即可生效新设定。 ```c // 示例:通过命令行指定优化等级 (适用于Makefile或其他自动化工具) armcc --optimization_level=3 source_file.c -o output_executable ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值