我见过SO提及内联的帖子使他们的软件运行得更快 [example] 。
这让我很奇怪,我什么时候应该创建一个内联的功能?
此外,C ++内联的相同指南是否适用?
注意:
我不是在问什么时候(显然需要的时候),或者为什么,我问的是,如果我碰巧遇到瓶颈,内联什么时候会有所帮助?
答案 0 :(得分:5)
根据我的经验,inline
关键字主要用于两种情况:
它允许您编写generic numeric code,这是inline
无法实现的。因此,在这种情况下,无论性能问题如何,都需要内联。
我认为泛型比较(参见also this SO question)是inline
显着提高性能的主要用例(因为内联代码可以专门用于当前类型而不是使用泛型比较)。
在所有其他情况下,添加inline
可能会使代码更快一些,但可能不会产生重大影响。所以我只会在你实际优化某些瓶颈时使用它。
答案 1 :(得分:0)
如果我碰巧遇到瓶颈,内联什么时候会有所帮助?
如果我发现程序计数器正在进入或离开方法X或者在很大一部分样本上使用类似于X的几种方法,则可能值得内联它们。
这只会在非常短的方法中发生,这些方法不会在其中执行进一步的调用。