使用过程间分析
过程间分析 (IPA) 使编译器能够跨不同文件进行优化(整个程序分析),并且可以显著提高性能。
您可以仅在 编译 步骤上指定过程间分析,也可以同时在整个程序方式下的 编译 和链接步骤上指定过程间分析。 整个程序模式将优化的范围扩大到整个程序单元,它可以是可执行文件或共享对象。 由于 IPA 可显着增加编译时间,因此应将使用 IPA 限制在开发的最终性能调整阶段。
在保存 IPA 信息的同时可通过指定 -r -qipa=relink 来生成可重新链接的对象。 这将生成一个包含所有对象文件的不可执行软件包。 通过使用此子选项,可以将链接推迟到最后一个阶段。
如果要在生成不可执行包时使用自己的归档文件,那么可以使用 ar 工具并将 XL_AR 环境变量设置为指向 ar 工具。 有关详细信息,请参阅 XL C/C++ Compiler Reference的 -qipa 部分。
您可以通过指定 -qipa 选项来启用 IPA。 下表描述了最常用的子选项及其效果。 -qipa 中描述了完整的子选项和语法集。
使用 IPA 的步骤如下:
- 在使用 -qipa 选项进行编译之前,请执行初步性能分析和调整,因为 IPA 分析使用两通机制来增加 编译 时间和链接时间。 您可以使用 -qipa=noobject 选项来减少某些 编译 和链接开销。
- 在 编译 和整个应用程序的链接步骤上或尽可能多地指定 -qipa 选项。 使用子选项来指示要对 未 使用 -qipa编译的程序部分进行的假设。
| 子选项 | 行为 |
|---|---|
| level=0 | 程序分区和简单的过程间优化,包括:
|
| level=1 | 直接插入和全局数据映射。 我们特别探讨了以下问题:
|
| level=2 | 全局别名分析,专业化,过程间数据流:
|
| inline=子选项 | 提供对功能直接插入的精确控制。 |
| 微调 | -qipa 的其他值提供了指定库代码行为,调整程序分区,从文件读取命令等功能。 |
| 重新链接 | 创建包含所有对象文件的不可执行包,同时保留 IPA 信息。 |
备注信息:
- XL C/C++ 和 XL Fortran 提供了与先前编译器版本创建的 IPA 对象的向后兼容性。 如果通过较早版本来链接使用更新版本的编译器编译的 IPA 对象文件,将在链接步骤期间发生错误。 例如,如果 IPA 对象文件
a.o由 XL C/C++ 13.1.3 编译,并且要与由 XL Fortran V15.1.0编译的 IPA 对象文件b.o链接,那么必须使用版本为 XL C/C++ 13.1.3 或更高版本的编译器。 - XL C/C++ for AIX 16.1 和 XL Fortran for AIX V16.1 生成匹配的 IPA 级别信息。 可以将具有匹配的 IPA 级别信息的 IPA 对象文件链接在一起。
有关编译器产品发布日期的更多信息,请访问支持生命周期网站: https://www.ibm.com/support/lifecycle/。
如果您的编译器版本在支持生命周期 Web 站点上有两个发行版日期,请根据您的产品标识确定日期。