对比执行时间要使用控制变量法,先后执行所使用的时间会有不同。
如:
public class Test {
private static void test0(int n) {
long l0 = System.currentTimeMillis();
List list = new ArrayList(n);
for (int i = 0; i < n; i++) {
list.add(i);
}
System.out.println(System.currentTimeMillis() - l0);
}
public static void main(String[] args) {
int i = 10;
while (i-- > 0) {
test0(10000000);
}
}
}
1195
450
355
728
354
666
352
671
353
669
public class Test {
private static void test0(int n) {
long l0 = System.currentTimeMillis();
List list = new ArrayList();
for (int i = 0; i < n; i++) {
list.add(i);
}
System.out.println(System.currentTimeMillis() - l0);
}
public static void main(String[] args) {
int i = 10;
while (i-- > 0) {
test0(10000000);
}
}
}
1719
1294
1251
1325
1281
1252
1260
1333
1281
1252
明显可以看出初始化长度比没有初始化长度节省时间。
每次运行,第1次加载list及添加元素比后面9次花费了更多时间。