Skip to content

Instantly share code, notes, and snippets.

@orionll
Last active April 11, 2017 04:27
Show Gist options
  • Save orionll/b98072d5ba01f83596ceead9d8200e0e to your computer and use it in GitHub Desktop.
Save orionll/b98072d5ba01f83596ceead9d8200e0e to your computer and use it in GitHub Desktop.
new ArrayList vs. addAll
import org.openjdk.jmh.annotations.*;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MICROSECONDS)
@State(Scope.Thread)
public class ArrayListCreate {
private List<Integer> orig;
@Param({"100", "1000", "10000" })
int size;
@Setup
public void setUp() {
orig = new ArrayList<>();
for (int i = 0; i < size; i++) {
orig.add(i % 63);
}
}
@Benchmark
public ArrayList<Integer> addAll() {
ArrayList<Integer> list = new ArrayList<>();
list.addAll(orig);
return list;
}
@Benchmark
public ArrayList<Integer> newArrayList() {
return new ArrayList<>(orig);
}
}
/*
Results:
# JMH 1.17.5 (released 46 days ago)
# VM version: JDK 1.8.0_121, VM 25.121-b13
# VM invoker: C:\Program Files\Java\jdk1.8.0_121\jre\bin\java.exe
# VM options: <none>
# Warmup: 2 iterations, 2 s each
# Measurement: 5 iterations, 3 s each
# Timeout: 10 min per iteration
# Threads: 4 threads, will synchronize iterations
# Benchmark mode: Average time, time/op
...
Benchmark (size) Mode Cnt Score Error Units
ArrayListCreate.addAll 100 avgt 5 0,413 ? 0,019 us/op
ArrayListCreate.addAll 1000 avgt 5 3,220 ? 0,089 us/op
ArrayListCreate.addAll 10000 avgt 5 31,063 ? 1,654 us/op
ArrayListCreate.newArrayList 100 avgt 5 0,214 ? 0,004 us/op
ArrayListCreate.newArrayList 1000 avgt 5 1,944 ? 0,038 us/op
ArrayListCreate.newArrayList 10000 avgt 5 20,131 ? 1,961 us/op
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment