首页 > 其他分享 >keil5 ARM Compiler5和6的优化等级以及对比

keil5 ARM Compiler5和6的优化等级以及对比

时间:2023-05-03 22:22:36浏览次数:46  
标签:代码 调试信息 keil5 Compiler5 优化 ARM 等级

keil5 ARM Compiler5和6的优化等级以及对比

 

链接:ARM Compiler 6 优化等级_zhuimeng_ruili的博客-CSDN博客_arm compiler6

链接:对 keil Mdk 优化等级的理解_zhuimeng_ruili的博客-CSDN博客_mdk优化等级

1、ARM Compiler6优化等级

 

 

 

 -O0:没有优化,不推荐在ARM Compiler6.6中使用

-O1:有限优化。这是当源代码调试的推荐级别

-O2:优化速度。由于许多循环展开和函数内联,代码大小将增加。

-O3:优化速度。比-O2生成的代码更快,但更大

-Os:平衡的优化。优化速度,代码大小的增加是合理的

-Oz:纯粹优化代码大小

 

2、ARM Compiler5优化等级

 

 

 

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

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

优化等级1:部分优化,去除未调用的内联函数或者静态函数,关闭debug窗口优化,此状态也能用于调试。

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

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

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

优化等级3:等级3和等级2除了执行相同的优化,还有空间和时间之间的平衡优化在生成的代码中比等级2更重的空间或时间。

特点:最大程度优化,产生极少量的调试信息。会进行更多代码优化,例如循环展开,更激进的函数内联等。另外,可以通过单独设置--loop_optimization_level=option来控制循环展开的优化等级。

注意:在debug时尽量保证优化等级在0,在出货时尽量保证等级在1,既不会出现问题,生成的代码也小。尽量不要用最高优化等级,防止程序跑飞。

3、对比测试

ARM Compiler5提供了4个不同的优化级别0~3。它们的行为和优化等级相关,优化等级越高,代码越小。

ARM Compiler6各个优化等级不存在直接的关系,可以将项目在各个优化等级下进行编译,选择最优的优化等级。

 

 

 

 

标签:代码,调试信息,keil5,Compiler5,优化,ARM,等级
From: https://www.cnblogs.com/dreamboy2000/p/17369802.html

相关文章

  • Docker Swarm介绍及搭建集群
    1、前言    相信Docker技术大家都有所了解,单个Docker能发挥的作用毕竟有限,也不便于管理,所以Docker得组集群来使用才能发挥强大的技术优势。既然要组集群那就涉及诸如Docker的资源调度、管理等等一系列问题。目前涉及Docker集群的三个主要的技术无外乎Swarm、Kubernetes、Mes......
  • 记录一次C#在arm64的Ubuntu下安装使用selenium的过程
    手头上有一台没用的安卓手机,想着安装Ubuntu当爬虫服务器用,安卓手机root后使用delopy安装启动Ubuntu系统这些前置过程就不谈了重点谈怎么在ssh下安装使用selenium的过程首先我们安装aptitude这个软件包管理库,这个库相对于apt功能,对软件的依赖处理更加优秀,且使用方式和apt一样su......
  • linux cpufreq framework(5)_ARM big Little driver
    1.前言也许大家会觉得奇怪:为什么Linuxkernel把对ARMbig·Lttile的支持放到了cpufreq的框架中?众所周知,ARM的big·Little架构,也称作HMP(具体可参考“LinuxCPUcore的电源管理(2)_cputopology”中相关的介绍),通过在一个chip中封装两种不同类型的ARMcore的方式,达到性能和功耗的......
  • Pycharm QT 设置
    Note:QtDesigner还是要用到完整版QT,不然功能不完整.pygram:D:\DeveloperTools\Anaconda\Scripts\pyuic5.exeArguments:$FileName$-o$FileNameWithoutExtension$.pyWorkingdirectory:$FileDir$......
  • <Python数据处理> Jacqueline Kazil Katharine Jarmul
    附录:数据分析师:AllenDowney的《统计思维:程序员数学之概率统计(第2版)》很好地介绍了统计数学概念并且使用了Python。CathyO'Neill和RachelSchutt的《数据科学实战》提供了数据科学领域的深入分析。scipy技术栈WesMcKinney编写了《利用Python进行数据分析》......
  • Python 与 Pycharm 安装
    推荐到官网下载,不推荐使用各种电脑管家如果没有强烈的版本要求,建议使用最新版Python安装到Python官网下载页面下载安装包,官网会自动根据当前系统推荐适合的安装包笔者此时最新版为Windows版本下的3.11.3,如果官网进不去,可以从笔者提供的备用地址下载下载完安装包后打......
  • Django学习笔记--命令行启动与pycharm启动
    命令行模式创建Django项目django-adminstartproject项目名启动django项目cd项目名pythonmanage.pyrunserver#可以配置ip和端口pythonmanage.pyrunserver0.0.0.0:8000#如果遇到报错,是解释器和版本不一致导致。找到python38\lib\site-packages\django\con......
  • 转载:ARM 内联汇编语法
    https://blog.csdn.net/myprogram_player/article/details/121372941ARM内联汇编语法:asmasm-qualifiers(AsemblemTemplate:OutputOperands[:InputOperands[:Clobbers]]) (1)asm​这块直接写做__asm__​表示这是一段内联汇编。(2)asm-qualifiers​这里取值......
  • 【HarmonyOS】元服务WebView组件 H5使用localstorage
    在日常开发中我们会在应用种接入H5网页,localStorage作为H5本地存储webstorage特性的API之一,主要作用是将数据保存在客户端中。对于快速开发元服务,通过WebView组件运行H5如何使用localstorage呢?下文以API7JavaUI为例为大家做相关的讲解。 【实现步骤】第一步、配置WebView首......
  • 【HarmonyOS】【JS】Tabs如何设置区分TabBar和TabContent的分割线不显示
    【关键字】Tabs,分割线 【问题描述】使用JS开发HarmonyOS应用时,使用Tabs组件,默认自带TabBar和TabContent的蓝色分割线,由于蓝色分割线样式不可设置,若不想要此蓝色分割线,如何去除蓝色分割线? 【问题分析】1、若JS使用Tabs,蓝色分割线为组件自带样式,暂不支持属性支持显示与隐藏......