default list: 74ms
pre-sized list: 53ms54ms
Integer array: 41ms42ms
int array: 9ms
public class Clazz {
static final int N = 1000000;
interface Test {
void test();
}
static final class DfltListTest implements Test {
public void test() {
for (int j = 0; j < 10; ++j) {
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < N; ++i) {
list.add(i);
}
}
}
}
static final class SizedListTest implements Test {
public void test() {
for (int j = 0; j < 10; ++j) {
List<Integer> list = new ArrayList<Integer>(N);
for (int i = 0; i < N; ++i) {
list.add(i);
}
}
}
}
static final class ArrayTestIntegerArrayTest implements Test {
public void test() {
for (int j = 0; j < 10; ++j) {
Integer[] arr = new Integer[N];
for (int i = 0; i < N; ++i) {
arr[i] = i;
}
}
}
}
static final class IntArrayTest implements Test {
public void test() {
for (int j = 0; j < 10; ++j) {
int[] arr = new int[N];
for (int i = 0; i < N; ++i) {
arr[i] = i;
}
}
}
}
static void test(Test t, String name) {
final int iter = 11;
final long timings[] = new long[iter];
for (int k = 0; k < iter; ++k) {
long t1 = System.currentTimeMillis();
t.test();
long t2 = System.currentTimeMillis();
timings[k] = t2 - t1;
System.gc();
}
Arrays.sort(timings);
System.out.printf("%s: %dms\n", name, timings[iter / 2]);
}
public static void main(String[] args) {
for (int i = 0; i < 5; ++i) {
test(new DfltListTest(), "default list");
test(new SizedListTest(), "pre-sized list");
test(new ArrayTestIntegerArrayTest(), "array""Integer array");
test(new IntArrayTest(), "int array");
}
}
}