Или это просто загромождает код для чего-то, что JIT будет заботиться автоматически?
Обоснование @inline в Scala действительно помогает производительности?
Ответ 1
Мне еще нужно найти случай, когда он улучшает производительность, и я пробовал в нескольких разных местах. 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
.
Поэтому, возможно, стоит попробовать на последних этапах оптимизации, но я бы не стал делать это регулярно, не проверяя, не влияет ли это на производительность.