鑑於這些代碼示例:通過Java中的局部變量在全局聲明靜態值是否有性能優勢?
樣品1個
public class SomeClass {
private static final int onlyUsedByMethodFoo = 1;
// many lines of code
public static void foo() {
final String value = items[onlyUsedByMethodFoo];
}
}
樣品2
public class SomeClass {
// many lines of code
public static void foo() {
final int onlyUsedByMethodFoo = 1;
final String value = items[onlyUsedByMethodFoo];
}
}
我更喜歡第二個代碼示例,因爲該值接近於它被使用的地方。它只能由Foo()使用。即使經常調用Foo(),我也沒有看到將其聲明爲全局值的優勢。我所看到的全局靜態值的唯一優勢可能在於性能,但尚不清楚它會帶來多大的性能優勢。也許Java認識到這一點並優化了字節碼。
關於性能,值得在全球範圍內聲明一個常數值嗎?性能增益是否有理由將一個恆定值遠離程序員使用和讀取的位置?
爲什麼性能增益必須從內存中查找值而不是在字節代碼中的方法體中具有字面權限? – Affe
[此問題](http://stackoverflow.com/q/306862/1679863)可能會對您感興趣。 –
這可能會適合更好的[Stack Exchange Code Review](http://codereview.stackexchange.com/) –