Vector vs ArrayList

$ cat Main.j
#define STR(x)      #x
#define STR_DEEP(x) STR(x)
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Object       obj = new Object();
        TYPE<Object> list = new TYPE<Object>();
        long         time = System.currentTimeMillis();
        for (int i = 10000000; --i >= 0; ) {
            list.add(obj);
#if REMOVE
            list.remove(0);
#endif
        }
        time = System.currentTimeMillis() - time;
        System.out.printf("%9s %-8s : %d\n", STR_DEEP(TYPE),
#if REMOVE
                          "(add+rm)",
#else
                          "(add)",
#endif
                          time);
    }
}
$ cat run.sh
for remove in 1 0
do
    for type in Vector ArrayList
    do
        cpp -P -DTYPE=$type -DREMOVE=$remove Main.j > Main.java
        javac Main.java
        java -Xmx128m Main
    done
done
$ sh run.sh
   Vector (add+rm) : 611
ArrayList (add+rm) : 470
   Vector (add)    : 891
ArrayList (add)    : 1292

(追記)id:namasute0:20061018 に詳しい解説が。