Created
October 9, 2016 03:05
-
-
Save koher/cd9c6c46d8c3af8f580a313b4fd87916 to your computer and use it in GitHub Desktop.
This file contains hidden or 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.io.PrintStream; | |
public class CollectionsPerformance { | |
public static void main(String[] args) { | |
final PrintStream out = System.out; | |
final int n = 100000; | |
final Integer x = 42; | |
out.println(new Measurement("ArrayList#add", () -> { | |
final List<Integer> list = new ArrayList<>(); | |
for (int i = 0; i < n; i++) { | |
list.add(x); | |
} | |
})); | |
out.println(new Measurement("LinkedList#add", () -> { | |
final List<Integer> list = new LinkedList<>(); | |
for (int i = 0; i < n; i++) { | |
list.add(x); | |
} | |
})); | |
out.println(new Measurement("ArrayDeque#addLast", () -> { | |
final Deque<Integer> deque = new ArrayDeque<>(); | |
for (int i = 0; i < n; i++) { | |
deque.addLast(x); | |
} | |
})); | |
out.println(new Measurement("LinkedList#addLast", () -> { | |
final Deque<Integer> deque = new LinkedList<>(); | |
for (int i = 0; i < n; i++) { | |
deque.addLast(x); | |
} | |
})); | |
out.println(new Measurement("ArrayList#add(0)", () -> { | |
final List<Integer> list = new ArrayList<>(); | |
for (int i = 0; i < n; i++) { | |
list.add(0, x); | |
} | |
})); | |
out.println(new Measurement("LinkedList#add(0)", () -> { | |
final List<Integer> list = new LinkedList<>(); | |
for (int i = 0; i < n; i++) { | |
list.add(0, x); | |
} | |
})); | |
out.println(new Measurement("ArrayDeque#addFirst", () -> { | |
final Deque<Integer> deque = new ArrayDeque<>(); | |
for (int i = 0; i < n; i++) { | |
deque.addFirst(x); | |
} | |
})); | |
out.println(new Measurement("LinkedList#addFirst", () -> { | |
final Deque<Integer> deque = new LinkedList<>(); | |
for (int i = 0; i < n; i++) { | |
deque.addFirst(x); | |
} | |
})); | |
} | |
static class Measurement { | |
private final String name; | |
private final double time; | |
public Measurement(String name, Runnable operation) { | |
this.name = name; | |
{ | |
final int numberOfRepetitions = 10; | |
final long start = System.currentTimeMillis(); | |
for (int i = 0; i < numberOfRepetitions; i++) { | |
operation.run(); | |
} | |
final long end = System.currentTimeMillis(); | |
time = (end - start) / 1000.0 / numberOfRepetitions; | |
} | |
} | |
public String getName() { | |
return name; | |
} | |
public double getTime() { | |
return time; | |
} | |
@Override | |
public String toString() { | |
return name + ": " + time + " [s]"; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment