首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么时候使用内联函数,什么时候不使用它?

什么时候使用内联函数,什么时候不使用它?
EN

Stack Overflow用户
提问于 2009-12-19 16:00:26
回答 8查看 110.8K关注 0票数 229

我知道内联是对编译器的一个提示或请求,它用来避免函数调用开销。

那么,根据什么可以确定一个函数是否为内联的候选函数呢?在哪种情况下应该避免内联?

EN

回答 8

Stack Overflow用户

发布于 2009-12-19 16:09:08

告诉编译器内联一个函数是一种优化,最重要的优化规则是过早优化是万恶之源。总是写出清晰的代码(使用高效的算法),然后分析你的程序,只优化耗时太长的函数。

如果你发现一个特定的函数非常简短简单,并且它在一个紧密的内部循环中被调用了数万次,那么它可能是一个很好的候选者。

不过,您可能会感到惊讶--许多C++编译器会自动为您内联小函数--而且它们可能也会忽略您的内联请求。

票数 12
EN

Stack Overflow用户

发布于 2009-12-19 16:40:00

过早优化是万恶之源!

根据经验,我通常只内联"getters“和"setters”。一旦代码正常工作并稳定下来,分析就可以显示哪些函数可以从内联中受益。

另一方面,大多数现代编译器都有相当好的优化算法,并且会为你内联你应该内联的东西。

Reasuming --编写内联的单行函数,以后再考虑其他函数。

票数 6
EN

Stack Overflow用户

发布于 2009-12-19 16:09:54

最好的方法是分析你的程序,并标记那些被调用了很多次的小函数,这些函数会消耗掉inline的CPU周期。这里的关键字是“小”--一旦函数调用开销与花费在函数中的时间相比微不足道,那么内联它们就没有意义了。

我建议的另一个用途是,如果您有一些小函数,这些函数在性能关键型代码中被频繁调用,从而导致缓存未命中相关,那么您可能也应该内联这些函数。同样,这也是分析器应该能够告诉您的。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1932311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档