C语言 -finline-limit GCC 编译器选项的确切行为



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

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

您可以在此处找到参数:

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

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

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

相关内容

  • 没有找到相关文章

最新更新