我只是想知道如果我执行以下操作会有任何性能差异,那么RAM的使用是否有任何差异?
而不是:
for (String str : Globals.stringArray)
{
//do whatever
}
我这样做:
List<String> stringArray = Globals.stringArray;
for (String str : stringArray)
{
//do whatever
}
循环遍历本地列表而不是全局静态列表会更好吗?
答案 0 :(得分:3)
没有(显着)性能差异,取决于编译器,您的代码可能会导致完全相同的字节码,因为您正在迭代完全相同的对象。一般来说,你不应该尝试在如此低的水平上调整性能,而是选择更具可读性,自我表达的方法:
程序员浪费了大量时间来考虑或担心程序中非关键部分的速度,而这些效率尝试实际上在考虑调试和维护时会产生很大的负面影响。我们应该忘记小的效率,比如大约97%的时间:过早的优化是所有邪恶的根源。
(Donald Knuth引用)
答案 1 :(得分:0)
您的代码应该执行完全相同的操作,因为您的局部变量不包含全局静态的副本,而是对它的引用。
答案 2 :(得分:0)
在您的编译器优化此代码后,它会在中间语言中生成相同的结果。所以,根本没有任何不同之处。