访问实例变量或本地变量

时间:2013-06-08 20:44:56

标签: java performance

想知道访问实例变量是否更好或者在本地存储其值。 例如:

方法一:

while (ctr < arr.length ) {
   sysout(arr[ctr++]);
}

VS

方法2:

int length = arr.length
while (ctr < length) {
   sysout(arr[ctr++];
} 

看起来Method1更干净,因为它不需要任何额外的变量声明。 在这种情况下使用方法2有什么好处吗?

要使问题通用,在这种情况下最佳做法是什么?

谢谢,

2 个答案:

答案 0 :(得分:5)

答案:没关系。

编译器会将其编译为完全相同的字节码(在这种情况下很可能),或者JIT会在运行时将其激活并使这两种解决方案等效。

执行Java时的主要目标是执行明显正确的代码。让编译器和JIT处理性能。

答案 1 :(得分:1)

我猜第二种方法的速度要快得多,因为在第二种情况下,运行时不必每次都在循环中执行arr.length。然而,差异是非常微不足道的。由于数组的length属性类似于public final member,因此获取length是一个恒定时间操作。如果您完成了list.size(),那将是不同的情况。