2011-05-20 67 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