Performance and Memory Allocation Comparison Between List and Set (#14124)
* Performance and Memory Allocation Comparison Between List and Set in Java * Performance and Memory Allocation Comparison Between List and Set in Java * Performance and Memory Allocation Comparison Between List and Set in Java * Performance and Memory Allocation Comparison Between List and Set in Java
This commit is contained in:
parent
5b65c7e54a
commit
680ddfef9c
|
@ -0,0 +1,56 @@
|
|||
package com.baeldung.listandset.benchmark;
|
||||
|
||||
import org.openjdk.jmh.annotations.*;
|
||||
import org.openjdk.jmh.infra.Blackhole;
|
||||
import org.openjdk.jmh.runner.Runner;
|
||||
import org.openjdk.jmh.runner.RunnerException;
|
||||
import org.openjdk.jmh.runner.options.Options;
|
||||
import org.openjdk.jmh.runner.options.OptionsBuilder;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@BenchmarkMode(Mode.SingleShotTime)
|
||||
@Warmup(iterations = 3, time = 10, timeUnit = TimeUnit.MILLISECONDS)
|
||||
@Measurement(iterations = 3, time = 10, timeUnit = TimeUnit.MILLISECONDS)
|
||||
public class ListAndSetAddBenchmark {
|
||||
|
||||
public static void main(String[] args) throws IOException, RunnerException {
|
||||
Options opt = new OptionsBuilder()
|
||||
.include(ListAndSetAddBenchmark.class.getSimpleName())
|
||||
.forks(1)
|
||||
.addProfiler("gc")
|
||||
.build();
|
||||
new Runner(opt).run();
|
||||
|
||||
}
|
||||
|
||||
@Benchmark
|
||||
public void addElementToArrayList(Params param, Blackhole blackhole) {
|
||||
param.arrayList.clear();
|
||||
for (int i = 0; i < param.addNumber; i++) {
|
||||
blackhole.consume(param.arrayList.add(i));
|
||||
}
|
||||
}
|
||||
|
||||
@Benchmark
|
||||
public void addElementToHashSet(Params param, Blackhole blackhole) {
|
||||
param.hashSet.clear();
|
||||
for (int i = 0; i < param.addNumber; i++) {
|
||||
blackhole.consume(param.hashSet.add(i));
|
||||
}
|
||||
}
|
||||
|
||||
@State(Scope.Benchmark)
|
||||
public static class Params {
|
||||
public int addNumber = 10000000;
|
||||
|
||||
public List<Integer> arrayList = new ArrayList<>();
|
||||
public Set<Integer> hashSet = new HashSet<>();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,70 @@
|
|||
package com.baeldung.listandset.benchmark;
|
||||
|
||||
import org.openjdk.jmh.annotations.*;
|
||||
import org.openjdk.jmh.infra.Blackhole;
|
||||
import org.openjdk.jmh.runner.Runner;
|
||||
import org.openjdk.jmh.runner.RunnerException;
|
||||
import org.openjdk.jmh.runner.options.Options;
|
||||
import org.openjdk.jmh.runner.options.OptionsBuilder;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@BenchmarkMode(Mode.SingleShotTime)
|
||||
@Warmup(iterations = 3, time = 10, timeUnit = TimeUnit.MILLISECONDS)
|
||||
@Measurement(iterations = 3, time = 10, timeUnit = TimeUnit.MILLISECONDS)
|
||||
public class ListAndSetContainsBenchmark {
|
||||
|
||||
public static void main(String[] args) throws IOException, RunnerException {
|
||||
Options opt = new OptionsBuilder()
|
||||
.include(ListAndSetContainsBenchmark.class.getSimpleName())
|
||||
.forks(1)
|
||||
.addProfiler("gc")
|
||||
.build();
|
||||
new Runner(opt).run();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Benchmark
|
||||
public void searchElementInArrayList(Params param, Blackhole blackhole) {
|
||||
|
||||
blackhole.consume(param.arrayList.contains(param.searchElement));
|
||||
}
|
||||
|
||||
@Benchmark
|
||||
public void searchElementInHashSet(Params param, Blackhole blackhole) {
|
||||
|
||||
blackhole.consume(param.hashSet.contains(param.searchElement));
|
||||
|
||||
}
|
||||
|
||||
@State(Scope.Benchmark)
|
||||
public static class Params {
|
||||
@Param({"5000000"})
|
||||
public int searchElement;
|
||||
|
||||
@Param({"10000000"})
|
||||
public int collectionSize;
|
||||
|
||||
public List<Integer> arrayList;
|
||||
public Set<Integer> hashSet;
|
||||
|
||||
@Setup(Level.Iteration)
|
||||
public void setup() {
|
||||
arrayList = new ArrayList<>();
|
||||
hashSet = new HashSet<>();
|
||||
for (int i = 0; i < collectionSize; i++) {
|
||||
arrayList.add(i);
|
||||
hashSet.add(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue