或者它是否只是将 JIT 自动处理的代码弄乱了?
问问题
16477 次
1 回答
60
我还没有找到可以提高性能的案例,而且我已经在很多不同的地方进行了尝试。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
.
因此,在优化的最后阶段可能值得一试,但如果不检查它是否会对性能产生影响,我不会经常这样做。
于 2010-04-25T21:44:01.090 回答