2011-05-20 49 views
1

我正在開發一個具有DataManager類的應用程序,該類包含ArrayList<Object[]>。由於此ArrayList需要在其他類中使用,因此考慮到此應用程序將在Android平臺上運行,我想知道訪問此列表的最有效和最快速的方式是什麼。可變訪問性能

A)創建在DataManager類一個public static ArrayList<Object[]> data並通過DataManager.data

乙其他類中引用它)創建DataManager類內的方法public ArrayList<Object[]> getData和具有其它類內的方法創建臨時使用的局部變量ArrayList<Object[]> data = mDataManager.getData()

C)..?

在我看來,由於對象的創建,B有更多的開銷。另外我讀靜態比非靜態更快?

回答

0

選項B不會增加內存的使用,因爲您只有一個ArrayList對象(所有使用它的對象只是一個簡單的引用,而不是副本)。使用ArrayList的對象也可以將此引用存儲爲實例變量,而不是在每次需要時從管理員類中請求它。

我在某處讀取訪問實例變量比訪問類(static)變量稍快,但我沒有指向源的鏈接。

性能差異不大可能有意義。但是,選項B爲您提供了更好的封裝。

+0

也就是說,選項B將與選項A相同,都引用相同的對象。通過公共方法訪問靜態成員vs創建本地成員的性能如何? – 2011-05-20 20:10:51

+0

對不起,我第一次誤讀了你的問題。 局部變量通常比'static'更快。選項B強加了方法調用的輕微開銷,但沒有意義。關注設計的清晰度,並讓編譯器負責優化代碼。 – 2011-05-20 20:13:49

+0

C)如何在DataManager中創建非靜態數據變量並直接從其他類訪問它,忽略封裝?或者性能增益可以忽略不計,所以最好使用適當的OOP並使用選項B? – 2011-05-20 20:24:37