Предположим, у меня есть очень тесный внутренний цикл, каждая итерация которого обращается к одному бухгалтерскому объекту и изменяет его, в котором хранятся некоторые простые данные об алгоритме и имеется простая логика для управления им.
Бухгалтерский объект является закрытым и окончательным, и все его методы являются закрытыми, окончательными и @inline. Вот пример (в синтаксисе Scala):
object Frobnicate {
private class DataRemaining(val start: Int, val end: Int) {
@inline private def nextChunk = ....
}
def frobnicate {
// ...
val bookkeeper = new DataRemaining(0, 1000)
while( bookeeper.hasData ) {
val data = bookkeeper.nextChunk
// ......
}
}
}
Будет ли когда-нибудь JVM встраивать весь объект DataRemaining в Frobnicate.frobnicate
? То есть будет ли он обрабатывать start
и end
как локальные переменные и встраивать код nextChunk непосредственно в frobnicate
?