2015-06-17 67 views
-1

我只是想知道是否有任何性能差異,如果我做以下,也有任何差異的RAM使用?Android - For循環與全局靜態列表與本地列表

而不是做的:

for (String str : Globals.stringArray) 
{ 
    //do whatever 
} 

我這樣做:

List<String> stringArray = Globals.stringArray; 
for (String str : stringArray) 
{ 
    //do whatever 
} 

它會通過本地列表,而不是一個全球性的靜態列表是更好的循環?

回答

3

根據編譯器的不同,您的代碼可能會導致完全相同的字節碼,因爲您正在遍歷完全相同的對象,因此沒有(顯着的)性能差異。在一般情況下,你不應該嘗試在如此低的水平調整性能,而是選擇更具可讀性,自我表現的方式,而不是:

程序員浪費大量的時間思考,也不必擔心,速度它們的程序中沒有關鍵的部分,而且在考慮調試和維護時,效率方面的這些嘗試實際上會產生強烈的負面影響。我們應該忘記小效率,大約97%的時間:過早優化是所有邪惡的根源。

(由高德納報價)

+0

非常有趣,感謝您的信息! – langjacques

0

您的代碼應該執行完全相同的操作,因爲您的本地變量不包含全局靜態的副本,而是包含對其的引用。

0

後你的編譯器優化,該代碼就會導致在中介語言相同。所以,不會有任何差別。