繁体   English   中英

在带有std = c99的gcc中强制内联函数

[英]forcing inline functions in gcc with std=c99

我正在编写一个纯C代码(以提高性能),并且希望gcc至少可以扩展我声明为“静态内联”的所有功能(因为我使用的是std = c99,所以内联的语义已更改并且是静态的最好使用inline),其中一些功能包括矩阵操作,堆向上/向下筛选等。通常情况下,发生的操作非常小,通常会发生很多次。 有没有一种方法可以通过指定GCC的任何选项来实现? 我已经启用了-o3,在某个地方我碰巧说过-o3和“静态内联”函数声明,所有函数调用都将被扩展。 真的吗? 我该如何验证? 谢谢!

您可以尝试__attribute__((always_inline)) ,但通常来说,正常的inline就足够了,除非您使用-Os 如果未内联函数,则gcc可能有充分的理由不这样做。

更好的方法是使用性能分析和链接时间优化(LTO)。 通常,手动优化代码应该是最后的解决方法。

当然,您可以验证函数是否已内联:只需查看生成的代码即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM