BAEL-4113 Measure exception performance
This commit is contained in:
parent
d752f841ff
commit
1ac7e20321
|
@ -0,0 +1,69 @@
|
||||||
|
package com.baeldung;
|
||||||
|
|
||||||
|
import org.openjdk.jmh.annotations.Benchmark;
|
||||||
|
import org.openjdk.jmh.annotations.BenchmarkMode;
|
||||||
|
import org.openjdk.jmh.annotations.Fork;
|
||||||
|
import org.openjdk.jmh.annotations.Measurement;
|
||||||
|
import org.openjdk.jmh.annotations.Mode;
|
||||||
|
import org.openjdk.jmh.annotations.OutputTimeUnit;
|
||||||
|
import org.openjdk.jmh.annotations.Warmup;
|
||||||
|
import org.openjdk.jmh.infra.Blackhole;
|
||||||
|
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
@Fork(1)
|
||||||
|
@Warmup(iterations = 2)
|
||||||
|
@Measurement(iterations = 10)
|
||||||
|
@BenchmarkMode(Mode.AverageTime)
|
||||||
|
@OutputTimeUnit(TimeUnit.MILLISECONDS)
|
||||||
|
public class ExceptionBenchmark {
|
||||||
|
private static final int LIMIT = 10_000;
|
||||||
|
|
||||||
|
@Benchmark
|
||||||
|
public void doNotThrowException(Blackhole blackhole) {
|
||||||
|
for (int i = 0; i < LIMIT; i++) {
|
||||||
|
blackhole.consume(new Object());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Benchmark
|
||||||
|
public void throwAndCatchException(Blackhole blackhole) {
|
||||||
|
for (int i = 0; i < LIMIT; i++) {
|
||||||
|
try {
|
||||||
|
throw new Exception();
|
||||||
|
} catch (Exception e) {
|
||||||
|
blackhole.consume(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Benchmark
|
||||||
|
public void createExceptionWithoutThrowingIt(Blackhole blackhole) {
|
||||||
|
for (int i = 0; i < LIMIT; i++) {
|
||||||
|
blackhole.consume(new Exception());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Benchmark
|
||||||
|
@Fork(value = 1, jvmArgs = "-XX:-StackTraceInThrowable")
|
||||||
|
public void throwExceptionWithoutAddingStackTrace(Blackhole blackhole) {
|
||||||
|
for (int i = 0; i < LIMIT; i++) {
|
||||||
|
try {
|
||||||
|
throw new Exception();
|
||||||
|
} catch (Exception e) {
|
||||||
|
blackhole.consume(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Benchmark
|
||||||
|
public void throwExceptionAndUnwindStackTrace(Blackhole blackhole) {
|
||||||
|
for (int i = 0; i < LIMIT; i++) {
|
||||||
|
try {
|
||||||
|
throw new Exception();
|
||||||
|
} catch (Exception e) {
|
||||||
|
blackhole.consume(e.getStackTrace());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue