我正在写一个纯c代码(为了快速性能),我希望gcc至少可以扩展我声明为"静态内联"的所有函数。 (因为我使用std = c99,内联的语义已经改变,静态内联是首选的),其中一些函数包括矩阵操作,堆上/下筛选等,通常是很多次发生的相当小的操作。有没有办法通过指定GCC的任何选项来实现这一目标?我已经启用-o3了,我遇到过某个地方,通过-o3和"静态内联"函数声明,所有函数调用都将被扩展。真的吗?我该如何验证?谢谢!
答案 0 :(得分:1)
您可以尝试__attribute__((always_inline))
,但一般情况下,正常inline
应该足够了,除非您选择-Os
。如果没有内联函数,gcc可能有充分的理由不这样做。
更好的方法是使用分析和链接时间优化(LTO)。一般来说,手动优化代码应该是最后一次重写。
当然,您可以验证函数是否已内联:只需查看生成的代码。