"热"和"内联"组合对函数定义的性能影响

Jay*_*y D 6 c linux gcc compiler-optimization

我有一个功能,它只进行一些操作,如增量.我已宣布inline与之相关__attribute__((hot)).

Gcc Doc建议关注以下hot属性:

hot属性用于通知编译器函数是已编译程序的热点.该功能进行了更积极的优化,并且在许多目标上,它被放置在文本部分的特殊子部分中,因此所有热门功能都紧密地联系在一起,从而改善了局部性.

可以解释为非inline热函数,它们将被放置在进程地址映射的低地址区域中.但inline函数调用应该被它们的代码逐字取代.所以问题是如何组合inlinehot真正有效?

Ant*_*ony 1

请参阅何时应该为函数/方法编写关键字“inline”?对关键字有很好的解释inlinehot 将函数声明为and 似乎是矛盾的inline;如果该函数未在头文件中定义,或者未在多个编译单元中定义,则不应将其声明为inline.

事实上,用函数定义替换函数调用并将其“内联”放置的决定取决于编译器。inline因此和的组合hot可能只是忽略该inline部分并将其放置在text.hot程序的部分中。链接器是进程中真正关心关键字的唯一部分inline,因此它不一定会执行您可能认为它会执行的操作。