KEIL5中C/C++优化等级问题

摘要:
删除未调用的内联函数和静态函数,并关闭调试窗口进行优化。此状态也可用于调试2高优化如果与--debug一起使用,则错误视图可能不太令人满意,这是因为无法将项目代码映射到源代码。这是默认优化级别。默认优化级别。在适当的代码量与充分的调试之间取得平衡,这是代码编写阶段最常用的优化级别-O2高度优化,调试信息不友好,代码和函数调用执行过程可能会被修改,函数可能会自动内联-O3得到最大程度的优化,生成的调试信息很少。将进行更多的代码优化,如循环展开、更激进的函数内联等。
原文链接:https://blog.csdn.net/liuqi3256797/article/details/90137350 KEIL5中C/C++优化等级问题
KEIL5中C/C++优化等级问题第1张
AdamFriedrich 2019-05-12 09:52:58 KEIL5中C/C++优化等级问题第2张 5638 KEIL5中C/C++优化等级问题第3张 收藏 8
分类专栏: ARM

知乎上有篇详解   https://zhuanlan.zhihu.com/p/24402180 强烈推荐

C/C++的优化等级会对程序产生 不定性的影响,至于选择哪种优化等级必须从 现有的程序分析才行

可参考知乎上的讲解

KEIL5中C/C++优化等级问题第4张

原文

0     Minimum optimization. Turns off most optimizations.It gives the best possible debug view and the lowest level of optimization.

            近乎不优化,用于调试代码。出现代码行不能设置断点可如此设置试试。

1          Restrictedoptimization. Removes unused inline functions and unused static functions.Turns off optimizations that seriously degrade the debug view. Ifused with --debug, this option gives a satisfactorydebug view with good code density.

部分优化。移除未调用的内联函数和静态函数,关闭debug窗口优化,此状态也能用于调试

2          Highoptimization. If used with --debug, the debug viewmight be less satisfactory because the mapping of object code tosource code is not always clear.

This is the default optimization level.

            默认优化等级。如果处于debug状态,部分代码行将不能被调试,具体做了什么优化好像没说

3     Maximumoptimization. -O3 performs the same optimizationsas -O2 however the balance between space and timeoptimizations in the generated code is more heavily weighted towardsspace or time compared with -O2. That is:

  • -O3 -Otime aims to produce fastercode than -O2 -Otime, at the risk of increasingyour image size

  • -O3 -Ospace aims to produce smallercode than -O2 -Ospace, but performance might bedegraded.

In addition, -O3 performs extra optimizationsthat are more aggressive, such as:

  • High-levelscalar optimizations, including loop unrolling, for -O3 -Otime. Thiscan give significant performance benefits at a small code size cost,but at the risk of a longer build time.

  • More aggressive inlining and automatic inliningfor -O3 -Otime.

  • -O0
  • 最少的优化,可以最大程度上配合产生代码调试信息,可以在任何代码行打断点,特别是死代码处。

  • -O1
  • 有限的优化,去除无用的inline和无用的static函数、死代码消除等,在影响到调试信息的地方均不进行优化。在适当的代码体积和充分的调试之间平衡,代码编写阶段最常用的优化等级。

  • -O2
  • 高度优化,调试信息不友好,有可能会修改代码和函数调用执行流程,自动对函数进行内联等。

  • -O3
  • 最大程度优化,产生极少量的调试信息。会进行更多代码优化,例如循环展开,更激进的函数内联等。

    另外,可以通过单独设置 --loop_optimization_level=option 来控制循环展开的优化等级。

免责声明:文章转载自《KEIL5中C/C++优化等级问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Jmeter发送https请求mysql explain中key_len的计算下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

浅谈webpack4.0 性能优化

前言:在现实项目中,我们可能很少需要从头开始去配置一个webpack 项目,特别是webpack4.0发布以后,零配置启动一个项目成为一种标配。正因为零配置的webpack对项目本身提供的“打包”和“压缩”功能已经做了优化,所以实际应用中,我们可以把精力更多专注在业务层面上,而无需分心于项目构建上的优化。然而从学习者的角度,我们需要了解webpack在项目...

2.2优化编译器的能力和局限性

写程序最主要的目标是使他在所有的可能的情况下都能正确工作。程序应该写出清晰简单的代码,主要为了给后期维护,起作用;但常常我们在程序的简单性,维护性,与程序的运行速度进行权衡; 高效的程序需要几类活动: (1)必须选择一组合适的算法和数据结构; (2)必须编写出编译器能够优化以转换成高效可执行的源代码,因此理解优化编译器的能力和局限性很重要,因此程序即使是很...

用Zend Encoder加密PHP文件和PHP 优化配置

在发布一个你写好的PHP程序时,你是不是担心自已辛苦写出来的成果会被别人占为已有呢?其实我们可以用Zend Encoder为我们的PHP文件加上一层保护壳。 软件版本:2.0.1软件大小:10.2M适用平台:Win9X/2000/XP官方网址:http://www.zend.com/store/products/zend-encoder.php软件的使用方...

VC6.0设置选项解读(转)

其实软件调试还是一个技术熟练过程,得慢慢自己总结,可以去搜索引擎查找一些相关的文章看看,下边是一篇关于VC6使用的小文章,贴出来大家看看: 大家可能一直在用VC开发软件,但是对于这个编译器却未必很了解。原因是多方面的。大多数情况下,我们只停留在“使用”它,而不会想去“了解”它。因为它只是一个工具,我们宁可把更多的精力放在C++语言和软件设计上。我们习惯于这...

查询速度慢的原因很多,常见如下几种

1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2、I/O吞吐量小,形成了瓶颈效应。 3、没有 创建计算列导致查询不优化。 4、内存不足 5、网络速度慢 6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7、 锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)sp_lock,sp_who,活动的用户查看,原因...

高德APP启动耗时剖析与优化实践(iOS篇)

前言最近高德地图APP完成了一次启动优化专项,超预期将双端启动的耗时都降低了65%以上,iOS在iPhone7上速度达到了400毫秒以内。就像产品们用后说的,快到不习惯。算一下每天为用户省下的时间,还是蛮有成就感的,本文做个小结。 (文中配图均为多才多艺的技术哥哥手绘)   启动阶段性能多维度分析 要优化,首先要做到的是对启动阶段的各个性能纬度做分析,...