【问题标题】:performance impact of "hot" and "inline" combination for a function definition“热”和“内联”组合对函数定义的性能影响
【发布时间】:2012-06-12 21:49:38
【问题描述】:

我有一个函数,它只执行少量操作,例如增量。我已经声明为inline__attribute__((hot))

Gcc Doc 建议hot 属性如下:

hot 属性用于通知编译器一个函数是 编译程序的热点。功能优化更多 积极地,在许多目标上,它被放置在特殊的小节中 的文本部分,所以所有的热门功能都出现在一起 改善局部性。

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

【问题讨论】:

    标签: c linux gcc compiler-optimization


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-23
      • 2020-03-24
      • 1970-01-01
      • 2012-08-18
      • 1970-01-01
      • 2011-04-15
      相关资源
      最近更新 更多