Green Hills中文网站 > 使用教程 > Greenhills GHS-S32DS集成GHS编译器优化等级设置
教程中心分类
Greenhills GHS-S32DS集成GHS编译器优化等级设置
发布时间:2024/08/06 16:41:37

  客户咨询编译优化问题,他们在S32 Design Studio中调用GHS的编译器,以便减少授权的占用时间。他们不了解如何查看和设置GHS编译器的优化等级。
 

  软硬件环境

  1)、软件版本:S32 Design Studio

  2)、电脑环境:Windows 11

  3)、外设硬件:无

  解决方法

  1)、打开S32DS,选中项目点击右键,选中“Properties”,进入设置界面。

  图4-1

  2)、进入“Properties for test”,选择“C/C++Build” -->"Settings"-->"Optimization",在 Optimization Strategy框内,选择相应的优化等级进行使用。

  图4-2-1

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

  Automatic Vector Optimization:控制矢量优化。如果没有选择优化策略,该选项还启用-Ospeed。

  Default Optimization Level:控制程序的整体优化配置文件。

  Optimize for Speed and Size (-O1):优化构建的速度和大小,避免优化牺牲一个为另一个。

  隐含 -Ogeneral -frigor=fast -delete .

  Optimize for Speed (-O2) :为速度优化构建。

  隐含 -Ospeed -Omax -OV -OI -Olink -frigor=fast.

  Optimize for Additional Speed (-O3): 优化构建速度,与额外的优化,以提高速度启用。

  隐含 -Ospeed -Omax -OV -OI -OB -Ointerproc -Olink -frigor=fast.

  Optimize for Size (-Os) :根据大小优化构建。

  隐含 -Osize -Omax -frigor=fast -delete .

  Optimize for Additional Size (-Oz):针对大小进行优化构建,使用额外的优化来改进启用的大小。

  隐含 -Osize -Omax -Olink -Ointerproc -frigor=fast.

  Optimize for Improved Debugging (-Og):优化改进的调试,意味着- Omoredebug。

  在使用此优化级别时,可以将命令行优化策略设置为-Odebug、-Omoredebug或-Omaxdebug。

  Default Optimization Level (-Od) :删除任何当前优化级别,并将工具链返回到默认优化状态。

  在使用此优化级别时,可以将命令行优化策略设置为任何值。

  No Optimizations (-O0):没有优化,禁用构建的优化。

  隐含 -Onone

  Intermodule Inlining:启用两次内联。如果没有选择优化策略,该选项还启用-Ospeed。

  Interprocedural Optimizations:

  Wholeprogram Interprocedural Optimizations(-Owholeprogram):启用全程序优化可以在高水平上分析程序控制和数据流。执行了速度和大小优化,例如一个调用站点内联,过程间常量传播和死代码消除,以及过程间别名分析。这个选项可以同时提高程序的速度和大小。如果没有选择优化策略,则该选项启用-ospeed

  Standard Interprocedural Optimizations(-Ointerproc)启用过程间优化允许基于被调用函数的知识进行优化,例如过程间别名分析。与 -Owholeprogram不同,-Ointerproc不要求整个程序在编译期间可用。然而,-Owholeprogram优化的一个严格子集应用于-Ointerproc。如果没有选择优化策略,该选项启用-Ospeed。

  Analysis Without Optimizations(-Oip_analysis_only)执行过程间分析,但不应用任何优化。

  Off( -Onoipa)[默认]禁用所有过程间优化。

  Linker Optimizations:控制链接器优化中列出的链接器优化。

  On(-Olink)根据您的整体优化策略启用某些链接器优化。许多这些优化都会对代码进行复杂的更改。这些更改可能会减慢链接阶段,产生更难调试的代码,或者有其他缺点。若要禁用单个链接器优化,请将其与此选项一起设置为“关闭”。

  启用 -Olink 隐含-delete和-uvfd。此外,如果启用了-Osize,则启用-Olink会隐式启用-codefactor。在构建共享对象时,这可能导致无法解析的符号。

  Off (-Onolink)[默认]

  注意:设置-Olink可能会导致DWARF调试信息与内存中的程序不同步。

优化等级编程和调试能力代码内存优化编译速度执行速度
-Onone====
-Ospeed- - -+ + +- - -+ + + + +
-Osize- -+ + + + +- -+ + +
-Ogeneral- -+ + + +- -+ + + +
-Odebug=+ +-+ +
-Omoredebug+ ++-+
-Omaxdebug+ + +-=-
读者也访问过这里:
135 2431 0251