package ceshi;
import java.util.*;
public class PerfprmanceTester {
private static final int TIMES = 10000;
public static abstract class Tester {
private String operation;
public Tester(String operation) {
this.operation = operation;
}
public abstract void test(List<String> list);
public String getOperation() {
return operation;
}
}
static Tester iterateTester = new Tester("iterate") {
public void test(List<String> list) {
for (int i = 0; i < 10; i++) {
Iterator<String> it = list.iterator();
while (it.hasNext()) {
it.next();
}
}
}
};
static Tester getTester = new Tester("get") {
public void test(List<String> list) {
for (int i = 1; i < list.size(); i++)
for (int j = 0; j < 10; j++)
list.get(j);
}
};
static Tester insertTester = new Tester("insert") {
public void test(List<String> list) {
ListIterator<String> it = list.listIterator(list.size() / 2);
for (int i = 0; i < TIMES / 2; i++)
it.add("hello");
}
};
static Tester removeTester = new Tester("remove") {
public void test(List<String> list) {
ListIterator<String> it = list.listIterator();
while (it.hasNext()) {
it.next();
it.remove();
}
}
};
static public void testJavaArray(List<String> list) {
Tester[] testers = { iterateTester, getTester };
test(testers, list);
}
static public void testList(List<String> list) {
Tester[] testers = { insertTester, iterateTester, getTester, removeTester };
test(testers, list);
}
static public void test(Tester[] testers, List<String> list) {
for (int i = 1; i < testers.length; i++) {
System.out.print(testers[i].getOperation() + "操作: ");
long t1 = System.currentTimeMillis();
testers[i].test(list);
long t2 = System.currentTimeMillis();
System.out.print(t2 - t1 + "ms");
System.out.println();
}
}
public static void main(String[] args) {
List<String> list = null;
System.out.println("---测试JAVA数组---");
String[] ss = new String[TIMES];
Arrays.fill(ss, "hello");
list = Arrays.asList(ss);
testJavaArray(list);
ss = new String[TIMES / 2];
Collection<String> col = Arrays.asList(ss);
System.out.println("---测试Vector---");
list = new Vector<String>();
list.addAll(col);
testList(list);
System.out.println("---测试LinkedList---");
list = new LinkedList<String>();
list.addAll(col);
testList(list);
System.out.println("---测试ArrayList---");
list = new ArrayList<String>();
list.addAll(col);
testList(list);
}
}
运行结果
---测试JAVA数组---
get操作: 2ms
---测试Vector---
iterate操作: 2ms
get操作: 1ms
remove操作: 3ms
---测试LinkedList---
iterate操作: 2ms
get操作: 2ms
remove操作: 1ms
---测试ArrayList---
iterate操作: 2ms
get操作: 3ms
remove操作: 4ms