【更多软件使用问题请点击亿道电子官方网站查询】
1、文档目标:用于了解GHS的编译器的优化等级问题
问题场景:在工程开发过程中,为了应对不同的应用场景,需要对于代码的编译的优化等级进行设置。例如:需要产生最小内存的代码、需要生成最适合调试的代码等。根据不同的需求去调整编译的优化等级。
2、软硬环境:
1、软件版本:MULTI 8.1.4
2、电脑环境:Windows 11
3、4功能介绍:
在GHS中,可以在构建选项配置中进行优化等级的设置。打开build option窗口,找到Optimization->Optimization Strategy进行设置。
4、GHS的优化等级一共有7个等级:
-
No Optimizations (-Onone) :禁用所有优化并提供最直接的代码生成。显式标记函数的内联是在这个级别上执行的。如果编译速度是您的最高优先级,请考虑此策略。
-
Optimize for Speed (-Ospeed):启用可提高性能但可能增加代码大小的优化。如果执行速度是您的最高优先级,请考虑此策略。
注意,与其他策略不同的是,-Ospeed通常是选择性地使用,针对使用最多程序执行时间的文件和函数。这是因为对速度进行优化往往会显著降低可调试性,并显著增加编译时间。
-
Optimize for Size (-Osize or -Ospace) :支持改进大小和性能的优化,同时支持限制性能增益的额外大小优化。如果尺寸最小化是您的最高优先级,并且您有用于生产和开发的独立构建,请考虑此策略。请注意,为了有效,-Osize应该尽可能全局地应用。
-
Optimize for General Use (-Ogeneral or -O):启用可同时提高大小和性能的优化。如果程序大小和速度具有同等的优先级,并且您有用于生产和开发的独立构建,请考虑此策略。
-
Optimize for Debuggability (-Odebug):启用不影响调试的优化。如果您没有大小限制,并且在生产和开发中使用相同的构建,请考虑此策略。注意-Odebug不允许选择单独的优化。
-
Maximum Debugging And Limited Optimizations (-Omoredebug):启用不影响调试的优化。如果您没有大小限制,并且在生产和开发中使用相同的构建,请考虑此策略。注意-Omoredebug不允许选择单独的优化。
-
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工具等等。亿道电子凭借多年的经验积累,真正的帮助客户实现了让研发更简单、更可靠、更高效的目标。