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

前端之家收集整理的这篇文章主要介绍了“热”和“内联”组合对函数定义的性能影响前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个功能,它只进行一些操作,如增量.我已声明为内联和__attribute __((热)).

Gcc Doc建议关注热门属性

The hot attribute is used to inform the compiler that a function is a@H_404_9@ hot spot of the compiled program. The function is optimized more@H_404_9@ aggressively and on many target it is placed into special subsection@H_404_9@ of the text section so all hot functions appears close together@H_404_9@ improving locality.

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

最佳答案
有关内联关键字的详细说明,请参阅When should I write the keyword ‘inline’ for a function/method?.将函数声明为热和内联似乎是一种矛盾;如果函数未在头文件中定义,或者未在多个编译单元中定义,则不应将其声明为内联.

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

猜你在找的Linux相关文章