Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C “对绩效的影响”;热的;及;内联“;函数定义的组合_C_Linux_Gcc_Compiler Optimization - Fatal编程技术网

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
关键字的部分,因此它不一定做您可能认为它做的事情