Мне еще предстоит найти случай, когда это улучшает производительность, и я пробовал в нескольких разных местах. JVM, кажется, неплохо умеет встраивать, когда это возможно, и даже если вы просите @inline в Scala, он не всегда может это сделать (и иногда я замечал, что это не так, даже когда я думаю, что это должно быть в состоянии).
Место, где вы ожидаете увидеть разницу в байт-коде, выглядит примерно так:
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
.
Так что, возможно, стоит попробовать на последних этапах оптимизации, но я бы не стал делать это регулярно, не проверяя, влияет ли это на производительность.