-GCC编译器选项“-finline-limit”的确切行为

4

我正在使用GCC的-finline-limit=N编译器选项。我正在编译我的代码并进行性能分析以检查CPU周期是否有减少。当我增加N时,理想情况下,由于更多的函数被内联,应该看到周期数的减少。但是我却看到CPU周期增加了。这是为什么呢?

1个回答

2

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

您可以在这里找到这些参数:

gcc optimize-options(搜索 max-inline-insns-single)

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

注意:通过内联来减少函数调用、分支等,并不总是能减少CPU周期。将 finline-limit 设为一个大数可能会使情况更糟。对函数使用 __attribute__ ((flatten)) 可以产生更好的结果。所有优化参数都可能因指令集和编译器版本而产生不同的结果。


请告诉我是否有任何特定情况,其中内联实际上会使周期变差。 - Vinay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接