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

时间:2010-04-25 17:11:50

标签: performance scala scala-2.8

或者它是否会使JIT自动处理的代码混乱?

1 个答案:

答案 0 :(得分:56)

我还没有找到一个提高性能的案例,我已经尝试了很多不同的地方。 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

因此在优化的最后阶段可能值得一试,但如果不检查它是否会对性能产生影响,我就不会费心去做。