4

我正在使用 GCC 的编译器选项。我正在编译我的代码并对其进行分析以检查 CPU 周期的减少。当我增加N时,理想情况下,随着更大的函数被内联,我应该看到循环数减少。但我看到 CPU 周期增加了。为什么会这样?-finline-limit=N

4

1 回答 1

2

gcc 中有多个用于内联的参数(--param)。finline-limit 使用其中的一些。

你可以在这里找到参数:

gcc 优化选项(搜索 max-inline-insns-single)

您可以从源代码中获得有关 GCC 内联启发式的一些信息: ipa-inline-analysis.c(顶部的注释)

注意:通过内联减少函数调用、分支等并不总能减少 CPU 周期。将 finline-limit 设置为较大的数字会使事情变得更糟。使用__attribute__ ((flatten))on 函数可以产生更好的结果。根据您的指令集和编译器版本,所有优化参数都会产生不同的结果。

于 2014-12-22T10:34:09.523 回答