【Greenhills】MULTI IDE设置编译的优化等级

news/2024/7/16 7:57:20 标签: 汽车, 嵌入式硬件, ide, 网络, c++

 【更多软件使用问题请点击亿道电子官方网站查询】

文档目标:用于了解GHS的编译器的优化等级问题

问题场景:在工程开发过程中,为了应对不同的应用场景,需要对于代码的编译的优化等级进行设置。例如:需要产生最小内存的代码、需要生成最适合调试的代码等。根据不同的需求去调整编译的优化等级。

软硬环境:

1、软件版本:MULTI 8.1.4

2、电脑环境:Windows 11

功能介绍:

在GHS中,可以在构建选项配置中进行优化等级的设置。打开build option窗口,找到Optimization->Optimization Strategy进行设置。

GHS的优化等级一共有7个等级:

  1. No Optimizations (-Onone) :禁用所有优化并提供最直接的代码生成。显式标记函数的内联是在这个级别上执行的。如果编译速度是您的最高优先级,请考虑此策略。

  1. Optimize for Speed (-Ospeed):启用可提高性能但可能增加代码大小的优化。如果执行速度是您的最高优先级,请考虑此策略。

注意,与其他策略不同的是,-Ospeed通常是选择性地使用,针对使用最多程序执行时间的文件和函数。这是因为对速度进行优化往往会显著降低可调试性,并显著增加编译时间。

  1. Optimize for Size (-Osize or -Ospace) :支持改进大小和性能的优化,同时支持限制性能增益的额外大小优化。如果尺寸最小化是您的最高优先级,并且您有用于生产和开发的独立构建,请考虑此策略。请注意,为了有效,-Osize应该尽可能全局地应用。

  1. Optimize for General Use (-Ogeneral or -O):启用可同时提高大小和性能的优化。如果程序大小和速度具有同等的优先级,并且您有用于生产和开发的独立构建,请考虑此策略。

  1. Optimize for Debuggability (-Odebug):启用不影响调试的优化。如果您没有大小限制,并且在生产和开发中使用相同的构建,请考虑此策略。注意-Odebug不允许选择单独的优化。

  1.  Maximum Debugging And Limited Optimizations (-Omoredebug):启用不影响调试的优化。如果您没有大小限制,并且在生产和开发中使用相同的构建,请考虑此策略。注意-Omoredebug不允许选择单独的优化。

  1. Maximum Debugging And No Inlining (-Omaxdebug):禁用内联和所有优化。如果您正在调试具有许多内联函数的代码。

注意:-Omaxdebug可能会在链接时因C语言中非静态内联函数的不一致使用而导致未定义的符号错误。这是因为当内联关键字应用于函数时,-Omaxdebug会抑制原本会发生的内联,但它不会修改内联关键字对非静态内联函数链接的影响。特别是,在不使用-Omaxdebug的情况下,定义和调用导入的内联C函数而不提供外部定义的代码通常会正确构建。这是因为通常会满足内联请求,因此不会检测到缺少导出的定义。但是,当使用-Omaxdebug时,将禁止内联,因此如果使用-Omaxdebug重新生成代码,则链接器将输出未定义的符号错误。

那么对于这个7个优化等级到底应该怎么去选择呢?可以通过下面的表格去选择符合自己需求的优化等级。(该表格是以-Onone优化等级为基准来评定。”+”:表示相对于-Onone有所提升,”-”:表示相对于-Onone有所降低,”=”:表示相对于-Onone没有变化)

优化等级

编程和调试能力

代码内存优化

编译速度

执行速度

-Onone

=

=

=

=

-Ospeed

- - -

+ + +

- - -

+ + + + +

-Osize

- -

+ + + + +

- -

+ + +

-Ogeneral

- -

+ + + +

- -

+ + + +

-Odebug

=

+ +

-

+ +

-Omoredebug

+ +

+

-

+

-Omaxdebug

+ + +

-

=

-

——————————————————————————————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

关于亿道电子

亿道电子技术有限公司(www.emdoor.cn)是国内资深的研发工具软件提供商,公司成立于2002年,面向中国广大的制造业客户提供研发、设计、管理过程中使用的各种软件开发工具,致力于帮助客户提高研发管理效率、缩短产品设计周期,提升产品可靠性。

二十多年来,先后与ARM、Altium、Ansys、QT、Green Hills、Minitab、EPLAN、QA Systems、OpenText、SureSoft、Visu-IT、PLS、Ashling、MSC Software、Autodesk、Source Insight、IncrediBuild、Lauterbach、Adobe、TestPlant等多家全球知名公司建立战略合作伙伴关系,并作为他们在中国区的主要分销合作伙伴服务了数千家中国本土客户,为客户提供从芯片级开发工具、EDA设计工具、软件编译以及测试工具、结构设计工具、仿真工具、电气设计工具、以及嵌入式GUI工具等等。亿道电子凭借多年的经验积累,真正的帮助客户实现了让研发更简单、更可靠、更高效的目标。


http://www.niftyadmin.cn/n/5412517.html

相关文章

vue3怎么设置路由 Vue Route

1. 安装Vue Router npm install vue-router 2. 创建Home.vue组件 在 src/views 目录下创建一个名为 Home.vue 的文件&#xff1a; <!-- <template> 标签是Vue组件的模板部分&#xff0c;其中包含了组件的HTML结构。 --> <template><div><h1>…

《LeetCode力扣练习》代码随想录——二叉树(完全二叉树的节点个数---Java)

《LeetCode力扣练习》代码随想录——二叉树&#xff08;完全二叉树的节点个数—Java&#xff09; 刷题思路来源于 代码随想录 222. 完全二叉树的节点个数 二叉树-后序遍历 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeN…

MySQL学习Day27——MySQL事务日志

事务的隔离性由锁机制实现,而事务的原子性、一致性和持久性由事务的redo日志和undo日志来保证。其中REDO LOG称为重做日志,提供再写入操作,恢复提交事务修改的页操作,用来保证事务的持久性,redo log是存储引擎层生成的日志,记录的是物理级别上的页修改操作,主要为了保证…

『操作系统OS笔记』MAC(m1芯片)电脑安装FFmpeg

MAC(m1芯片)电脑安装FFmpeg mac电脑安装ffmpeg两种方法 文章目录 1. brew安装FFmpeg2. 官网下载FFmpeg压缩包3. 使用FFmpeg将音频和视频合并 1. brew安装FFmpeg brew install ffmpeg # 需要等比较久的时间&#xff0c;安装很多东西&#xff0c;安装过程中如果遇到报错对应解决…

回收站选址(CCF 201912-2)解题思路

分析 把x,y坐标拼接成一个字符串&#xff08;x,y&#xff09;作为Set的key&#xff0c;保存到Set中&#xff0c;遍历Set&#xff0c;取出坐标&#xff0c;然后判断上下左右四个点是否在Set中&#xff0c;如果在&#xff0c;进而判断&#xff0c;四个角是否在Set中&#xff0c;…

R实现热图与网络图组合并显示显著性

大家好&#xff0c;我是带我去滑雪&#xff01; 热图和网络图分别展示了数据的不同方面。热图可用于显示变量之间的相关性或模式&#xff0c;而网络图则可用于显示节点之间的连接关系。通过将它们组合在一起&#xff0c;可以更全面地展示数据之间的关系和结构。下面开始代码实战…

文献速递:深度学习疾病预后--临床级计算病理学使用基于整张切片图像的弱监督深度学习

Title 题目 Clinical-grade computational pathology using weakly supervised deep learning on whole slide images 临床级计算病理学使用基于整张切片图像的弱监督深度学习 01 文献速递介绍 The development of decision support systems for pathology and their deplo…

coqui-ai/TTS 安装使用

Coqui AI的TTS是一款开源深度学习文本转语音工具&#xff0c;以高质量、多语言合成著称。它提供超过1100种语言的预训练模型库&#xff0c;能够轻松集成到各种应用中&#xff0c;并允许用户通过简单API进行个性化声音训练与微调。其技术亮点包括但不限于低资源适应性&#xff0…