Created
October 27, 2013 10:28
-
-
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/
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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