diff --git a/apm-agent-benchmarks/pom.xml b/apm-agent-benchmarks/pom.xml index 914109d45f..83917d9331 100644 --- a/apm-agent-benchmarks/pom.xml +++ b/apm-agent-benchmarks/pom.xml @@ -119,6 +119,7 @@ org.openjdk.jmh.Main + diff --git a/apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/AbstractBenchmark.java b/apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/AbstractBenchmark.java similarity index 95% rename from apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/AbstractBenchmark.java rename to apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/AbstractBenchmark.java index c79ecd41f1..94d15a305a 100644 --- a/apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/AbstractBenchmark.java +++ b/apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/AbstractBenchmark.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -17,9 +17,9 @@ * limitations under the License. * #L% */ -package co.elastic.apm.impl; +package co.elastic.apm.benchmark; -import co.elastic.apm.CpuProfiler; +import co.elastic.apm.benchmark.profiler.CpuProfiler; import org.openjdk.jmh.annotations.Fork; import org.openjdk.jmh.annotations.Measurement; import org.openjdk.jmh.annotations.Scope; diff --git a/apm-agent-benchmarks/src/main/java/co/elastic/apm/ElasticApmBenchmark.java b/apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/ElasticApmContinuousBenchmark.java similarity index 98% rename from apm-agent-benchmarks/src/main/java/co/elastic/apm/ElasticApmBenchmark.java rename to apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/ElasticApmContinuousBenchmark.java index 768469f030..35a6b21279 100644 --- a/apm-agent-benchmarks/src/main/java/co/elastic/apm/ElasticApmBenchmark.java +++ b/apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/ElasticApmContinuousBenchmark.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -17,10 +17,9 @@ * limitations under the License. * #L% */ -package co.elastic.apm; +package co.elastic.apm.benchmark; import co.elastic.apm.configuration.CoreConfiguration; -import co.elastic.apm.impl.AbstractBenchmark; import co.elastic.apm.impl.ElasticApmTracer; import co.elastic.apm.report.Reporter; import co.elastic.apm.servlet.ApmFilter; @@ -88,7 +87,7 @@ @BenchmarkMode(Mode.SampleTime) @OutputTimeUnit(TimeUnit.MICROSECONDS) @State(Scope.Thread) -public class ElasticApmBenchmark extends AbstractBenchmark { +public class ElasticApmContinuousBenchmark extends AbstractBenchmark { private ApmFilter apmFilter; private MockHttpServletRequest request; @@ -101,7 +100,7 @@ public class ElasticApmBenchmark extends AbstractBenchmark { private FilterChain filterChainWithoutApm; public static void main(String[] args) throws RunnerException { - run(ElasticApmBenchmark.class); + run(ElasticApmContinuousBenchmark.class); } @Setup diff --git a/apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/ObjectPoolBenchmark.java b/apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/objectpool/ObjectPoolBenchmark.java similarity index 84% rename from apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/ObjectPoolBenchmark.java rename to apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/objectpool/ObjectPoolBenchmark.java index 8b408b46d3..679f977bc6 100644 --- a/apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/ObjectPoolBenchmark.java +++ b/apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/objectpool/ObjectPoolBenchmark.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -17,8 +17,9 @@ * limitations under the License. * #L% */ -package co.elastic.apm.impl; +package co.elastic.apm.benchmark.objectpool; +import co.elastic.apm.benchmark.AbstractBenchmark; import co.elastic.apm.impl.transaction.Transaction; import co.elastic.apm.objectpool.impl.BlockingQueueObjectPool; import co.elastic.apm.objectpool.impl.MixedObjectPool; @@ -28,23 +29,16 @@ import org.openjdk.jmh.annotations.BenchmarkMode; import org.openjdk.jmh.annotations.Mode; import org.openjdk.jmh.annotations.OutputTimeUnit; -import org.openjdk.jmh.annotations.Scope; import org.openjdk.jmh.annotations.Setup; -import org.openjdk.jmh.annotations.State; import org.openjdk.jmh.annotations.TearDown; import org.openjdk.jmh.annotations.Threads; -import org.openjdk.jmh.profile.GCProfiler; -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.util.concurrent.TimeUnit; -@State(Scope.Benchmark) @BenchmarkMode(Mode.AverageTime) @OutputTimeUnit(TimeUnit.NANOSECONDS) -public class ObjectPoolBenchmark { +public class ObjectPoolBenchmark extends AbstractBenchmark { private RingBufferObjectPool ringBufferObjectPool; private BlockingQueueObjectPool blockingQueueObjectPool; @@ -52,15 +46,7 @@ public class ObjectPoolBenchmark { private ThreadLocalObjectPool threadLocalObjectPool; public static void main(String[] args) throws RunnerException { - Options opt = new OptionsBuilder() - .include(ObjectPoolBenchmark.class.getSimpleName()) - .warmupIterations(2) - .measurementIterations(2) - .forks(1) - .addProfiler(GCProfiler.class) - .build(); - - new Runner(opt).run(); + run(ObjectPoolBenchmark.class); } @Setup diff --git a/apm-agent-benchmarks/src/main/java/co/elastic/apm/CpuProfiler.java b/apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/profiler/CpuProfiler.java similarity index 98% rename from apm-agent-benchmarks/src/main/java/co/elastic/apm/CpuProfiler.java rename to apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/profiler/CpuProfiler.java index d63a718eb3..f3beb740a1 100644 --- a/apm-agent-benchmarks/src/main/java/co/elastic/apm/CpuProfiler.java +++ b/apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/profiler/CpuProfiler.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -17,7 +17,7 @@ * limitations under the License. * #L% */ -package co.elastic.apm; +package co.elastic.apm.benchmark.profiler; import com.sun.management.OperatingSystemMXBean; import org.openjdk.jmh.infra.BenchmarkParams; diff --git a/apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/AbstractHttpJacksonReporterBenchmark.java b/apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/reporter/AbstractHttpJacksonReporterBenchmark.java similarity index 96% rename from apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/AbstractHttpJacksonReporterBenchmark.java rename to apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/reporter/AbstractHttpJacksonReporterBenchmark.java index e2d2746998..946bb2d833 100644 --- a/apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/AbstractHttpJacksonReporterBenchmark.java +++ b/apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/reporter/AbstractHttpJacksonReporterBenchmark.java @@ -17,9 +17,9 @@ * limitations under the License. * #L% */ -package co.elastic.apm.impl; +package co.elastic.apm.benchmark.reporter; -import co.elastic.apm.CpuProfiler; +import co.elastic.apm.benchmark.profiler.CpuProfiler; import co.elastic.apm.report.serialize.JacksonPayloadSerializer; import co.elastic.apm.report.serialize.PayloadSerializer; import com.fasterxml.jackson.databind.ObjectMapper; diff --git a/apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/AbstractHttpReporterBenchmark.java b/apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/reporter/AbstractHttpReporterBenchmark.java similarity index 99% rename from apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/AbstractHttpReporterBenchmark.java rename to apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/reporter/AbstractHttpReporterBenchmark.java index 7b49e808b8..295af9bbc4 100644 --- a/apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/AbstractHttpReporterBenchmark.java +++ b/apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/reporter/AbstractHttpReporterBenchmark.java @@ -17,7 +17,7 @@ * limitations under the License. * #L% */ -package co.elastic.apm.impl; +package co.elastic.apm.benchmark.reporter; import co.elastic.apm.report.ApmServerHttpPayloadSender; import co.elastic.apm.report.PayloadSender; diff --git a/apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/AbstractReporterBenchmark.java b/apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/reporter/AbstractReporterBenchmark.java similarity index 97% rename from apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/AbstractReporterBenchmark.java rename to apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/reporter/AbstractReporterBenchmark.java index c92d513593..8bbc317c8c 100644 --- a/apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/AbstractReporterBenchmark.java +++ b/apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/reporter/AbstractReporterBenchmark.java @@ -17,8 +17,10 @@ * limitations under the License. * #L% */ -package co.elastic.apm.impl; +package co.elastic.apm.benchmark.reporter; +import co.elastic.apm.benchmark.AbstractBenchmark; +import co.elastic.apm.impl.ElasticApmTracer; import co.elastic.apm.impl.context.Context; import co.elastic.apm.impl.context.Request; import co.elastic.apm.impl.payload.Agent; diff --git a/apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/HttpCborJacksonReporterBenchmark.java b/apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/reporter/HttpCborJacksonReporterBenchmark.java similarity index 75% rename from apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/HttpCborJacksonReporterBenchmark.java rename to apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/reporter/HttpCborJacksonReporterBenchmark.java index 462d292f00..4b2ca54578 100644 --- a/apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/HttpCborJacksonReporterBenchmark.java +++ b/apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/reporter/HttpCborJacksonReporterBenchmark.java @@ -17,15 +17,11 @@ * limitations under the License. * #L% */ -package co.elastic.apm.impl; +package co.elastic.apm.benchmark.reporter; -import co.elastic.apm.CpuProfiler; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.cbor.CBORFactory; -import org.openjdk.jmh.profile.GCProfiler; -import org.openjdk.jmh.runner.Runner; import org.openjdk.jmh.runner.RunnerException; -import org.openjdk.jmh.runner.options.OptionsBuilder; public class HttpCborJacksonReporterBenchmark extends AbstractHttpJacksonReporterBenchmark { @@ -36,12 +32,7 @@ public class HttpCborJacksonReporterBenchmark extends AbstractHttpJacksonReporte * {@code java -jar apm-agent-benchmarks/target/benchmarks.jar -prof gc} */ public static void main(String[] args) throws RunnerException { - new Runner(new OptionsBuilder() - .include(HttpCborJacksonReporterBenchmark.class.getSimpleName()) - .addProfiler(GCProfiler.class) - .addProfiler(CpuProfiler.class) - .build()) - .run(); + run(HttpCborJacksonReporterBenchmark.class); } protected ObjectMapper getObjectMapper() { diff --git a/apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/HttpVanillaJacksonReporterBenchmark.java b/apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/reporter/HttpJacksonReporterContinuousBenchmark.java similarity index 68% rename from apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/HttpVanillaJacksonReporterBenchmark.java rename to apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/reporter/HttpJacksonReporterContinuousBenchmark.java index a678c8fa31..34c84e23c4 100644 --- a/apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/HttpVanillaJacksonReporterBenchmark.java +++ b/apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/reporter/HttpJacksonReporterContinuousBenchmark.java @@ -17,16 +17,16 @@ * limitations under the License. * #L% */ -package co.elastic.apm.impl; +package co.elastic.apm.benchmark.reporter; -import co.elastic.apm.CpuProfiler; import com.fasterxml.jackson.databind.ObjectMapper; -import org.openjdk.jmh.profile.GCProfiler; -import org.openjdk.jmh.runner.Runner; import org.openjdk.jmh.runner.RunnerException; -import org.openjdk.jmh.runner.options.OptionsBuilder; -public class HttpVanillaJacksonReporterBenchmark extends AbstractHttpJacksonReporterBenchmark { +/** + * Measures the performance of the actually used reporter implementation + * including JSON serialization and reporting payloads over HTTP + */ +public class HttpJacksonReporterContinuousBenchmark extends AbstractHttpJacksonReporterBenchmark { /** * Convenience benchmark run method @@ -35,12 +35,7 @@ public class HttpVanillaJacksonReporterBenchmark extends AbstractHttpJacksonRepo * {@code java -jar apm-agent-benchmarks/target/benchmarks.jar -prof gc} */ public static void main(String[] args) throws RunnerException { - new Runner(new OptionsBuilder() - .include(HttpVanillaJacksonReporterBenchmark.class.getSimpleName()) - .addProfiler(GCProfiler.class) - .addProfiler(CpuProfiler.class) - .build()) - .run(); + run(HttpJacksonReporterContinuousBenchmark.class); } protected ObjectMapper getObjectMapper() { diff --git a/apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/HttpMoshiReporterBenchmark.java b/apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/reporter/HttpMoshiReporterBenchmark.java similarity index 75% rename from apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/HttpMoshiReporterBenchmark.java rename to apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/reporter/HttpMoshiReporterBenchmark.java index 24e7524764..30d6d42b9b 100644 --- a/apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/HttpMoshiReporterBenchmark.java +++ b/apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/reporter/HttpMoshiReporterBenchmark.java @@ -17,14 +17,11 @@ * limitations under the License. * #L% */ -package co.elastic.apm.impl; +package co.elastic.apm.benchmark.reporter; -import co.elastic.apm.report.serialize.MoshiPayloadSerializer; +import co.elastic.apm.benchmark.serializer.MoshiPayloadSerializer; import co.elastic.apm.report.serialize.PayloadSerializer; -import org.openjdk.jmh.profile.GCProfiler; -import org.openjdk.jmh.runner.Runner; import org.openjdk.jmh.runner.RunnerException; -import org.openjdk.jmh.runner.options.OptionsBuilder; public class HttpMoshiReporterBenchmark extends AbstractHttpReporterBenchmark { @@ -35,11 +32,7 @@ public class HttpMoshiReporterBenchmark extends AbstractHttpReporterBenchmark { * {@code java -jar apm-agent-benchmarks/target/benchmarks.jar -prof gc} */ public static void main(String[] args) throws RunnerException { - new Runner(new OptionsBuilder() - .include(HttpMoshiReporterBenchmark.class.getSimpleName()) - .addProfiler(GCProfiler.class) - .build()) - .run(); + run(HttpMoshiReporterBenchmark.class); } @Override diff --git a/apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/HttpNoopJsonReporterBenchmark.java b/apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/reporter/HttpNoopJsonReporterBenchmark.java similarity index 78% rename from apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/HttpNoopJsonReporterBenchmark.java rename to apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/reporter/HttpNoopJsonReporterBenchmark.java index 75c84086dc..050ea7a09f 100644 --- a/apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/HttpNoopJsonReporterBenchmark.java +++ b/apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/reporter/HttpNoopJsonReporterBenchmark.java @@ -17,13 +17,10 @@ * limitations under the License. * #L% */ -package co.elastic.apm.impl; +package co.elastic.apm.benchmark.reporter; import co.elastic.apm.report.serialize.PayloadSerializer; -import org.openjdk.jmh.profile.GCProfiler; -import org.openjdk.jmh.runner.Runner; import org.openjdk.jmh.runner.RunnerException; -import org.openjdk.jmh.runner.options.OptionsBuilder; public class HttpNoopJsonReporterBenchmark extends AbstractHttpReporterBenchmark { @@ -34,11 +31,7 @@ public class HttpNoopJsonReporterBenchmark extends AbstractHttpReporterBenchmark * {@code java -jar apm-agent-benchmarks/target/benchmarks.jar -prof gc} */ public static void main(String[] args) throws RunnerException { - new Runner(new OptionsBuilder() - .include(HttpNoopJsonReporterBenchmark.class.getSimpleName()) - .addProfiler(GCProfiler.class) - .build()) - .run(); + run(HttpNoopJsonReporterBenchmark.class); } @Override diff --git a/apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/NoopReporterBenchmark.java b/apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/reporter/NoopReporterBenchmark.java similarity index 78% rename from apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/NoopReporterBenchmark.java rename to apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/reporter/NoopReporterBenchmark.java index 9ece739854..e7ddee803a 100644 --- a/apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/NoopReporterBenchmark.java +++ b/apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/reporter/NoopReporterBenchmark.java @@ -17,15 +17,16 @@ * limitations under the License. * #L% */ -package co.elastic.apm.impl; +package co.elastic.apm.benchmark.reporter; import co.elastic.apm.impl.payload.Payload; import co.elastic.apm.report.PayloadSender; -import org.openjdk.jmh.profile.GCProfiler; -import org.openjdk.jmh.runner.Runner; import org.openjdk.jmh.runner.RunnerException; -import org.openjdk.jmh.runner.options.OptionsBuilder; +/** + * Measures how many events the reporter can handle, + * not accounting for JSON serialization and sending payloads over HTTP. + */ public class NoopReporterBenchmark extends AbstractReporterBenchmark { /** @@ -35,11 +36,7 @@ public class NoopReporterBenchmark extends AbstractReporterBenchmark { * {@code java -jar apm-agent-benchmarks/target/benchmarks.jar -prof gc} */ public static void main(String[] args) throws RunnerException { - new Runner(new OptionsBuilder() - .include(NoopReporterBenchmark.class.getSimpleName()) - .addProfiler(GCProfiler.class) - .build()) - .run(); + run(NoopReporterBenchmark.class); } protected PayloadSender getPayloadSender() { diff --git a/apm-agent-benchmarks/src/main/java/co/elastic/apm/report/serialize/MoshiPayloadSerializer.java b/apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/serializer/MoshiPayloadSerializer.java similarity index 97% rename from apm-agent-benchmarks/src/main/java/co/elastic/apm/report/serialize/MoshiPayloadSerializer.java rename to apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/serializer/MoshiPayloadSerializer.java index e9342b3f2b..2fdc873fa9 100644 --- a/apm-agent-benchmarks/src/main/java/co/elastic/apm/report/serialize/MoshiPayloadSerializer.java +++ b/apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/serializer/MoshiPayloadSerializer.java @@ -17,7 +17,7 @@ * limitations under the License. * #L% */ -package co.elastic.apm.report.serialize; +package co.elastic.apm.benchmark.serializer; import co.elastic.apm.impl.payload.Payload; import co.elastic.apm.report.serialize.PayloadSerializer; diff --git a/apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/stacktrace/StackTraceFactoryBenchmark.java b/apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/stacktrace/StackTraceFactoryBenchmark.java similarity index 80% rename from apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/stacktrace/StackTraceFactoryBenchmark.java rename to apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/stacktrace/StackTraceFactoryBenchmark.java index ddaf4d5ae7..197cf1f95d 100644 --- a/apm-agent-benchmarks/src/main/java/co/elastic/apm/impl/stacktrace/StackTraceFactoryBenchmark.java +++ b/apm-agent-benchmarks/src/main/java/co/elastic/apm/benchmark/stacktrace/StackTraceFactoryBenchmark.java @@ -17,40 +17,32 @@ * limitations under the License. * #L% */ -package co.elastic.apm.impl.stacktrace; +package co.elastic.apm.benchmark.stacktrace; -import co.elastic.apm.CpuProfiler; +import co.elastic.apm.benchmark.AbstractBenchmark; +import co.elastic.apm.impl.stacktrace.Stacktrace; +import co.elastic.apm.impl.stacktrace.StacktraceConfiguration; +import co.elastic.apm.impl.stacktrace.StacktraceFactory; import co.elastic.apm.objectpool.NoopObjectPool; import co.elastic.apm.objectpool.ObjectPool; import co.elastic.apm.objectpool.impl.RingBufferObjectPool; 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.Scope; import org.openjdk.jmh.annotations.Setup; import org.openjdk.jmh.annotations.State; -import org.openjdk.jmh.annotations.Threads; -import org.openjdk.jmh.annotations.Warmup; -import org.openjdk.jmh.profile.GCProfiler; -import org.openjdk.jmh.runner.Runner; import org.openjdk.jmh.runner.RunnerException; -import org.openjdk.jmh.runner.options.OptionsBuilder; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; @State(Scope.Benchmark) -@Warmup(iterations = 5) -@Measurement(iterations = 5) -@Fork(1) -@Threads(1) @BenchmarkMode(Mode.AverageTime) @OutputTimeUnit(TimeUnit.MILLISECONDS) -public class StackTraceFactoryBenchmark { +public class StackTraceFactoryBenchmark extends AbstractBenchmark { private StacktraceFactory.CurrentThreadStackTraceFactory currentThreadStackTraceFactory; private List stacktraces; @@ -64,12 +56,7 @@ public class StackTraceFactoryBenchmark { * {@code java -jar apm-agent-benchmarks/target/benchmarks.jar -prof gc} */ public static void main(String[] args) throws RunnerException { - new Runner(new OptionsBuilder() - .include(StackTraceFactoryBenchmark.class.getSimpleName()) - .addProfiler(GCProfiler.class) - .addProfiler(CpuProfiler.class) - .build()) - .run(); + run(StackTraceFactoryBenchmark.class); } @Setup