Android - 具有全局静态列表与本地列表的循环

时间:2015-06-17 12:01:15

标签: java android

我只是想知道如果我执行以下操作会有任何性能差异,那么RAM的使用是否有任何差异?

而不是:

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

我这样做:

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

循环遍历本地列表而不是全局静态列表会更好吗?

3 个答案:

答案 0 :(得分:3)

没有(显着)性能差异,取决于编译器,您的代码可能会导致完全相同的字节码,因为您正在迭代完全相同的对象。一般来说,你不应该尝试在如此低的水平上调整性能,而是选择更具可读性,自我表达的方法:

  

程序员浪费了大量时间来考虑或担心程序中非关键部分的速度,而这些效率尝试实际上在考虑调试和维护时会产生很大的负面影响。我们应该忘记小的效率,比如大约97%的时间:过早的优化是所有邪恶的根源。

(Donald Knuth引用)

答案 1 :(得分:0)

您的代码应该执行完全相同的操作,因为您的局部变量不包含全局静态的副本,而是对它的引用。

答案 2 :(得分:0)

在您的编译器优化此代码后,它会在中间语言中生成相同的结果。所以,根本没有任何不同之处。