Skip to content

Instantly share code, notes, and snippets.

@koher
Created October 9, 2016 03:05
Show Gist options
  • Save koher/cd9c6c46d8c3af8f580a313b4fd87916 to your computer and use it in GitHub Desktop.
Save koher/cd9c6c46d8c3af8f580a313b4fd87916 to your computer and use it in GitHub Desktop.
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