应该何时内联函数(性能方面)?

时间:2014-03-25 13:22:13

标签: performance optimization f# inline

我见过SO提及内联的帖子使他们的软件运行得更快 [example]
这让我很奇怪,我什么时候应该创建一个内联的功能

此外,C ++内联的相同指南是否适用?

注意:
我不是在问什么时候(显然需要的时候),或者为什么,我问的是,如果我碰巧遇到瓶颈,内联什么时候会有所帮助?

2 个答案:

答案 0 :(得分:5)

根据我的经验,inline关键字主要用于两种情况:

  • 它允许您编写generic numeric code,这是inline无法实现的。因此,在这种情况下,无论性能问题如何,都需要内联。

  • 我认为泛型比较(参见also this SO question)是inline显着提高性能的主要用例(因为内联代码可以专门用于当前类型而不是使用泛型比较)。

在所有其他情况下,添加inline可能会使代码更快一些,但可能不会产生重大影响。所以我只会在你实际优化某些瓶颈时使用它。

答案 1 :(得分:0)

  

如果我碰巧遇到瓶颈,内联什么时候会有所帮助?

This is the method I use寻找加速。

如果我发现程序计数器正在进入或离开方法X或者在很大一部分样本上使用类似于X的几种方法,则可能值得内联它们。

这只会在非常短的方法中发生,这些方法不会在其中执行进一步的调用。