【发布时间】:2011-06-02 21:33:38
【问题描述】:
假设我有一个非常紧凑的内部循环,它的每次迭代都会访问和改变一个单一的簿记对象,该对象存储一些关于算法的简单数据并具有简单的操作逻辑
簿记对象是私有的和最终的,它的所有方法都是私有的、最终的和@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中?
【问题讨论】:
标签: java scala jvm jit jvm-hotspot