当我看到这篇文章http://developer.android.com/training/articles/perf-tips.html时,我正在阅读 Google 文档页面
谁能解释为什么我得到相反的结果?
我的结果是:(平均)结果 1:76 结果 2:73 结果 3:143
我使用以下代码执行了一些测试(循环遍历相同的测试):
package TestPack;
import java.util.ArrayList;
public class Test
{
static ArrayList<Integer> mTheArray = new ArrayList<Integer>();
static
{
for(int i = 0; i < 10000000; i++)
{
mTheArray.add(1234234223);
}
}
static long mTimeStarted;
public static void main(String args[])
{
//Test 1.
mTimeStarted = System.currentTimeMillis();
One();
Fn.Out("Result 1: " + String.valueOf(System.currentTimeMillis() - mTimeStarted));
//Test 2.
mTimeStarted = System.currentTimeMillis();
Two();
Fn.Out("Result 2: " + String.valueOf(System.currentTimeMillis() - mTimeStarted));
//Test 3
mTimeStarted = System.currentTimeMillis();
Three();
Fn.Out("Result 3: " + String.valueOf(System.currentTimeMillis() - mTimeStarted));
}
//Slowest (But not...).
public static int One()
{
int sum = 0;
for (int i = 0; i < mTheArray.size(); ++i)
{
sum += mTheArray.get(i);
}
return sum;
}
public static int Two()
{
int sum = 0;
ArrayList<Integer> localArray = mTheArray;
int len = localArray.size();
for (int i = 0; i < len; ++i) {
sum += localArray.get(i);
}
return sum;
}
//Fastest (But actually slowest in this test).
public static int Three()
{
int sum = 0;
for (Integer a : mTheArray) {
sum += a;
}
return sum;
}
}