C “对绩效的影响”;热的;及;内联“;函数定义的组合
我有一个函数,它只执行一些操作,比如增量。我已经声明为C “对绩效的影响”;热的;及;内联“;函数定义的组合,c,linux,gcc,compiler-optimization,C,Linux,Gcc,Compiler Optimization,我有一个函数,它只执行一些操作,比如增量。我已经声明为inline,并使用\uuuuu属性((hot)) 为hot属性建议以下内容: hot属性用于通知编译器某个函数是 编译程序的热点。功能更加优化 在许多目标上,它被置于特殊的位置 使所有热函数紧密地显示在一起 改善地方性 这可以解释为对于非内联热函数,它们将被放置在进程地址映射的较低地址区域。但是inline函数调用应该被它们的代码所取代。所以问题是inline和hot的组合到底是如何工作的 有关inline关键字的详细说明,请参见。将函数声
inline
,并使用\uuuuu属性((hot))
为hot
属性建议以下内容:
hot属性用于通知编译器某个函数是
编译程序的热点。功能更加优化
在许多目标上,它被置于特殊的位置
使所有热函数紧密地显示在一起
改善地方性
这可以解释为对于非内联热函数,它们将被放置在进程地址映射的较低地址区域。但是inline
函数调用应该被它们的代码所取代。所以问题是inline
和hot
的组合到底是如何工作的 有关inline
关键字的详细说明,请参见。将函数声明为hot
和inline
似乎是矛盾的;如果函数未在头文件中定义,或未在多个编译单元中定义,则不应将其声明为inline
事实上,用函数定义替换函数调用并将其“串联”的决定取决于编译器。因此,inline
和hot
的组合很可能只是忽略了inline
部分,并将其放在程序的text.hot
部分。链接器是流程中唯一真正关心inline
关键字的部分,因此它不一定做您可能认为它做的事情