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