Skip to content

Instantly share code, notes, and snippets.

@greenlaw110
Created October 27, 2013 10:28
Show Gist options
  • Save greenlaw110/7180128 to your computer and use it in GitHub Desktop.
Save greenlaw110/7180128 to your computer and use it in GitHub Desktop.
arraylist-vs-linkedlist-vs-gaplist-vs-fasttable, the benchmark program extended from the one coming from http://www.programcreek.com/2013/03/arraylist-vs-linkedlist-vs-vector/
import java.util.*;
import java.util.regex.*;
import java.lang.reflect.*;
import java.text.*;
import java.net.*;
import java.io.*;
import javax.script.*;
import java.math.*;
import org.magicwerk.brownies.collections.*;
import javolution.util.*;
public class Benchmark {
public static void main(String[] args) throws Exception {
ArrayList<Integer> arrayList = new ArrayList<Integer>();
LinkedList<Integer> linkedList = new LinkedList<Integer>();
GapList<Integer> gapList = new GapList<Integer>();
FastTable<Integer> fastTable = new FastTable<Integer>();
// ArrayList add
long startTime = System.nanoTime();
for (int i = 0; i < 100000; i++) {
arrayList.add(i);
}
long endTime = System.nanoTime();
long duration = endTime - startTime;
System.out.println("ArrayList add: " + duration);
// GapList add
startTime = System.nanoTime();
for (int i = 0; i < 100000; i++) {
gapList.add(i);
}
endTime = System.nanoTime();
duration = endTime - startTime;
System.out.println("GapList add: " + duration);
// FastTable add
startTime = System.nanoTime();
for (int i = 0; i < 100000; i++) {
fastTable.add(i);
}
endTime = System.nanoTime();
duration = endTime - startTime;
System.out.println("FastTable add: " + duration);
// LinkedList add
startTime = System.nanoTime();
for (int i = 0; i < 100000; i++) {
linkedList.add(i);
}
endTime = System.nanoTime();
duration = endTime - startTime;
System.out.println("LinkedList add: " + duration);
assert(gapList.size() == linkedList.size() && arrayList.size() == gapList.size() && fastTable.size() == linkedList.size());
// GapList insert
startTime = System.nanoTime();
for (int i = 0; i < 10000; i++) {
gapList.add(50000, i);
}
endTime = System.nanoTime();
duration = endTime - startTime;
System.out.println("GapList insert: " + duration);
// FastTable insert
startTime = System.nanoTime();
for (int i = 0; i < 10000; i++) {
fastTable.add(50000, i);
}
endTime = System.nanoTime();
duration = endTime - startTime;
System.out.println("FastTable insert: " + duration);
// ArrayList insert
startTime = System.nanoTime();
for (int i = 0; i < 10000; i++) {
arrayList.add(50000, i);
}
endTime = System.nanoTime();
duration = endTime - startTime;
System.out.println("ArrayList insert: " + duration);
// LinkedList insert
startTime = System.nanoTime();
ListIterator<Integer> li = linkedList.listIterator(50000);
for (int i = 0; i < 10000; i++) {
//linkedList.add(50000, i);
li.add(i);
}
endTime = System.nanoTime();
duration = endTime - startTime;
System.out.println("LinkedList insert: " + duration);
assert(gapList.size() == linkedList.size() && arrayList.size() == gapList.size() && fastTable.size() == linkedList.size());
// ArrayList get
startTime = System.nanoTime();
for (int i = 0; i < 10000; i++) {
arrayList.get(i);
}
endTime = System.nanoTime();
duration = endTime - startTime;
System.out.println("ArrayList get: " + duration);
// GapList get
startTime = System.nanoTime();
for (int i = 0; i < 10000; i++) {
gapList.get(i);
}
endTime = System.nanoTime();
duration = endTime - startTime;
System.out.println("GapList get: " + duration);
// FastTable get
startTime = System.nanoTime();
for (int i = 0; i < 10000; i++) {
fastTable.get(i);
}
endTime = System.nanoTime();
duration = endTime - startTime;
System.out.println("FastTable get: " + duration);
// LinkedList get
startTime = System.nanoTime();
for (int i = 0; i < 10000; i++) {
linkedList.get(i);
}
endTime = System.nanoTime();
duration = endTime - startTime;
System.out.println("LinkedList get: " + duration);
// ArrayList remove
startTime = System.nanoTime();
for (int i = 9999; i >=0; i--) {
arrayList.remove(i);
}
endTime = System.nanoTime();
duration = endTime - startTime;
System.out.println("ArrayList remove: " + duration);
// GapList remove
startTime = System.nanoTime();
for (int i = 9999; i >=0; i--) {
gapList.remove(i);
}
endTime = System.nanoTime();
duration = endTime - startTime;
System.out.println("GapList remove: " + duration);
// FastTable remove
startTime = System.nanoTime();
for (int i = 9999; i >=0; i--) {
fastTable.remove(i);
}
endTime = System.nanoTime();
duration = endTime - startTime;
System.out.println("FastTable remove: " + duration);
// LinkedList remove
startTime = System.nanoTime();
for (int i = 9999; i >=0; i--) {
linkedList.remove(i);
}
endTime = System.nanoTime();
duration = endTime - startTime;
System.out.println("LinkedList remove: " + duration);
assert(gapList.size() == linkedList.size() && arrayList.size() == gapList.size() && fastTable.size() == linkedList.size());
}
public static void outputAll(Object... args) {
System.out.println();
for (Object o: args) {
System.out.println(o);
}
}
public static void output(String msg, Object... args) {
System.out.println(String.format(msg, args));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment