Scala中的@inline注释是否真的有助于提高性能?

还是只是混淆了JIT会自动处理的东西的代码呢?

我还没有find一个提高性能的例子,我尝试了很多不同的地方。 JVM在内联时似乎是相当好的,即使你在Scala中要求@inline,它也不能总是这样做(有时我已经注意到,即使我认为它也不应该能够)。

你期望看到一个字节码差异的地方是这样的:

object InlineExample { final class C(val i: Int) { @inline def t2 = i*2 @inline def t4 = t2*2 } final class D(val i: Int) { def t2 = i*2 def t4 = t2*2 } } 

当用-optimise编译时。 而且你也看到了不同之处,但是由于JIT编译器可以注意到相同的优化适用于D ,所以它通常不会运行得更快。

所以在优化的最后阶段可能值得一试,但是我不会经常性地去做,而不去检查它是否会影响性能。