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

时间:2012-06-12 21:49:38

标签: c linux gcc compiler-optimization

我有一个只进行少量操作的功能,例如增量。我已声明为inline__attribute__((hot))

Gcc Doc建议关注hot属性:

  

hot属性用于通知编译器函数是a   编译程序的热点。该功能更加优化   积极地,并在许多目标上,它被放入特殊的分部   文本部分,所以所有热门功能都显得紧密相连   改善地方。

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

1 个答案:

答案 0 :(得分:1)

有关inline关键字的详细解释,请参阅When should I write the keyword 'inline' for a function/method?。将函数声明为hot inline似乎是矛盾的。如果函数未在头文件中定义,或者未在多个编译单元中定义,则不应将其声明为inline

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