diff options
author | Bogdan Drutu <bdrutu@google.com> | 2018-09-11 00:08:18 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-11 00:08:18 -0700 |
commit | c0e0b225a5230036b3dc09134f94eece81d3f96d (patch) | |
tree | 180169458a7c7a7ac9cdeb6f5196e51abaa92852 /benchmarks | |
parent | dfc9d00706a16387346e2567ef23139da29fba2f (diff) | |
download | opencensus-java-c0e0b225a5230036b3dc09134f94eece81d3f96d.tar.gz |
Make jmh available for all subprojects. (#1425)
Diffstat (limited to 'benchmarks')
5 files changed, 1 insertions, 307 deletions
diff --git a/benchmarks/README.md b/benchmarks/README.md index 617333bf..e591a8d6 100644 --- a/benchmarks/README.md +++ b/benchmarks/README.md @@ -1,22 +1,3 @@ # OpenCensus Benchmarks -## To run the benchmark use - -``` -$ ./gradlew :opencensus-benchmarks:jmh -``` - -## To debug compilation errors -When you make incompatible changes in the Benchmarks classes you may get compilation errors which -are related to the old code not being compatible with the new code. Some of the reasons are: -* Any plugin cannot delete the generated code (jmh generates code) because if the user configured -the directory as the same as source code the plugin will delete users source code. -* After you run jmh a gradle demon will stay alive which may cache the generated code in memory and -generates the same code even if the files were changed. - -Run this commands to clean the Gradle's cache: -```bash -./gradlew --stop -rm -fr .gradle/ -rm -fr benchmarks/build -```
\ No newline at end of file +See [here](../CONTRIBUTING.md#benchmarks) for how to run and debug issues with benchmarks.
\ No newline at end of file diff --git a/benchmarks/build.gradle b/benchmarks/build.gradle index 4a92224e..04688dd3 100644 --- a/benchmarks/build.gradle +++ b/benchmarks/build.gradle @@ -1,30 +1,5 @@ description = 'OpenCensus Benchmarks' -buildscript { - repositories { - jcenter() - maven { - url "https://plugins.gradle.org/m2/" - } - } - dependencies { - classpath "me.champeau.gradle:jmh-gradle-plugin:0.4.7" - classpath "gradle.plugin.io.morethan.jmhreport:gradle-jmh-report:0.7.0" - } -} - -apply plugin: "me.champeau.gradle.jmh" -apply plugin: "io.morethan.jmhreport" - -jmh { - jmhVersion = '1.20' - warmupIterations = 10 - iterations = 10 - fork = 1 - failOnError = true - resultFormat = 'JSON' -} - dependencies { compile project(':opencensus-api'), project(':opencensus-impl-core'), @@ -32,18 +7,6 @@ dependencies { project(':opencensus-impl') } -compileJmhJava { - options.compilerArgs = compileJava.options.compilerArgs -} - -// Generate html report for findbugsJmh. -findbugsJmh { - reports { - xml.enabled = false - html.enabled = true - } -} - jmhReport { jmhResultPath = project.file("${project.buildDir}/reports/jmh/results.json") jmhReportOutput = project.file("${project.buildDir}/reports/jmh") diff --git a/benchmarks/src/jmh/java/io/opencensus/benchmarks/trace/propagation/B3FormatImplBenchmark.java b/benchmarks/src/jmh/java/io/opencensus/benchmarks/trace/propagation/B3FormatImplBenchmark.java deleted file mode 100644 index eb20ec2c..00000000 --- a/benchmarks/src/jmh/java/io/opencensus/benchmarks/trace/propagation/B3FormatImplBenchmark.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2018, OpenCensus Authors - * - * 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. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package io.opencensus.benchmarks.trace.propagation; - -import io.opencensus.trace.SpanContext; -import io.opencensus.trace.SpanId; -import io.opencensus.trace.TraceId; -import io.opencensus.trace.TraceOptions; -import io.opencensus.trace.Tracestate; -import io.opencensus.trace.Tracing; -import io.opencensus.trace.propagation.SpanContextParseException; -import io.opencensus.trace.propagation.TextFormat; -import io.opencensus.trace.propagation.TextFormat.Getter; -import io.opencensus.trace.propagation.TextFormat.Setter; -import java.util.HashMap; -import java.util.Map; -import java.util.Random; -import java.util.concurrent.TimeUnit; -import org.openjdk.jmh.annotations.Benchmark; -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; - -/** Benchmarks for {@link io.opencensus.implcore.trace.propagation.B3Format}. */ -@State(Scope.Benchmark) -public class B3FormatImplBenchmark { - @State(Scope.Thread) - public static class Data { - private TextFormatBenchmarkBase textFormatBase; - private SpanContext spanContext; - private Map<String, String> spanContextHeaders; - - @Setup - public void setup() { - textFormatBase = new TextFormatBenchmarkBase(Tracing.getPropagationComponent().getB3Format()); - Random random = new Random(1234); - spanContext = - SpanContext.create( - TraceId.generateRandomId(random), - SpanId.generateRandomId(random), - TraceOptions.builder().setIsSampled(random.nextBoolean()).build(), - Tracestate.builder().build()); - spanContextHeaders = new HashMap<String, String>(); - textFormatBase.inject(spanContext, spanContextHeaders); - } - } - - /** - * This benchmark attempts to measure performance of {@link TextFormat#inject(SpanContext, Object, - * Setter)}. - */ - @Benchmark - @BenchmarkMode(Mode.SampleTime) - @OutputTimeUnit(TimeUnit.NANOSECONDS) - public Map<String, String> inject(Data data) { - Map<String, String> carrier = new HashMap<String, String>(); - data.textFormatBase.inject(data.spanContext, carrier); - return carrier; - } - - /** - * This benchmark attempts to measure performance of {@link TextFormat#extract(Object, Getter)}. - */ - @Benchmark - @BenchmarkMode(Mode.SampleTime) - @OutputTimeUnit(TimeUnit.NANOSECONDS) - public SpanContext extract(Data data) throws SpanContextParseException { - return data.textFormatBase.extract(data.spanContextHeaders); - } - - /** - * This benchmark attempts to measure performance of {@link TextFormat#inject(SpanContext, Object, - * Setter)} then {@link TextFormat#extract(Object, Getter)}. - */ - @Benchmark - @BenchmarkMode(Mode.SampleTime) - @OutputTimeUnit(TimeUnit.NANOSECONDS) - public SpanContext injectExtract(Data data) throws SpanContextParseException { - Map<String, String> carrier = new HashMap<String, String>(); - data.textFormatBase.inject(data.spanContext, carrier); - return data.textFormatBase.extract(carrier); - } -} diff --git a/benchmarks/src/jmh/java/io/opencensus/benchmarks/trace/propagation/BinaryFormatImplBenchmark.java b/benchmarks/src/jmh/java/io/opencensus/benchmarks/trace/propagation/BinaryFormatImplBenchmark.java deleted file mode 100644 index 391ca906..00000000 --- a/benchmarks/src/jmh/java/io/opencensus/benchmarks/trace/propagation/BinaryFormatImplBenchmark.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2017, OpenCensus Authors - * - * 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. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package io.opencensus.benchmarks.trace.propagation; - -import io.opencensus.trace.SpanContext; -import io.opencensus.trace.SpanId; -import io.opencensus.trace.TraceId; -import io.opencensus.trace.TraceOptions; -import io.opencensus.trace.Tracestate; -import io.opencensus.trace.Tracing; -import io.opencensus.trace.propagation.BinaryFormat; -import io.opencensus.trace.propagation.SpanContextParseException; -import java.util.Random; -import java.util.concurrent.TimeUnit; -import org.openjdk.jmh.annotations.Benchmark; -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; - -/** Benchmarks for {@link BinaryFormat}. */ -@State(Scope.Benchmark) -public class BinaryFormatImplBenchmark { - @State(Scope.Thread) - public static class Data { - private BinaryFormat binaryFormat; - private SpanContext spanContext; - private byte[] spanContextBinary; - - @Setup - public void setup() { - binaryFormat = Tracing.getPropagationComponent().getBinaryFormat(); - Random random = new Random(1234); - spanContext = - SpanContext.create( - TraceId.generateRandomId(random), - SpanId.generateRandomId(random), - TraceOptions.builder().setIsSampled(random.nextBoolean()).build(), - Tracestate.builder().build()); - spanContextBinary = binaryFormat.toByteArray(spanContext); - } - } - - /** - * This benchmark attempts to measure performance of {@link - * BinaryFormat#toBinaryValue(SpanContext)}. - */ - @Benchmark - @BenchmarkMode(Mode.SampleTime) - @OutputTimeUnit(TimeUnit.NANOSECONDS) - public byte[] toBinarySpanContext(Data data) { - return data.binaryFormat.toByteArray(data.spanContext); - } - - /** - * This benchmark attempts to measure performance of {@link BinaryFormat#fromBinaryValue(byte[])}. - */ - @Benchmark - @BenchmarkMode(Mode.SampleTime) - @OutputTimeUnit(TimeUnit.NANOSECONDS) - public SpanContext fromBinarySpanContext(Data data) throws SpanContextParseException { - return data.binaryFormat.fromByteArray(data.spanContextBinary); - } - - /** - * This benchmark attempts to measure performance of {@link - * BinaryFormat#toBinaryValue(SpanContext)} then {@link BinaryFormat#fromBinaryValue(byte[])}. - */ - @Benchmark - @BenchmarkMode(Mode.SampleTime) - @OutputTimeUnit(TimeUnit.NANOSECONDS) - public SpanContext toFromBinarySpanContext(Data data) throws SpanContextParseException { - return data.binaryFormat.fromByteArray(data.binaryFormat.toByteArray(data.spanContext)); - } -} diff --git a/benchmarks/src/jmh/java/io/opencensus/benchmarks/trace/propagation/TextFormatBenchmarkBase.java b/benchmarks/src/jmh/java/io/opencensus/benchmarks/trace/propagation/TextFormatBenchmarkBase.java deleted file mode 100644 index 902b0a3a..00000000 --- a/benchmarks/src/jmh/java/io/opencensus/benchmarks/trace/propagation/TextFormatBenchmarkBase.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2018, OpenCensus Authors - * - * 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. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package io.opencensus.benchmarks.trace.propagation; - -import io.opencensus.trace.SpanContext; -import io.opencensus.trace.propagation.SpanContextParseException; -import io.opencensus.trace.propagation.TextFormat; -import io.opencensus.trace.propagation.TextFormat.Getter; -import io.opencensus.trace.propagation.TextFormat.Setter; -import java.util.Map; -import javax.annotation.Nullable; - -/** Generic benchmarks for {@link io.opencensus.trace.propagation.TextFormat}. */ -final class TextFormatBenchmarkBase { - private static final Setter<Map<String, String>> setter = - new Setter<Map<String, String>>() { - @Override - public void put(Map<String, String> carrier, String key, String value) { - carrier.put(key, value); - } - }; - - private static final Getter<Map<String, String>> getter = - new Getter<Map<String, String>>() { - @Nullable - @Override - public String get(Map<String, String> carrier, String key) { - return carrier.get(key); - } - }; - - private final TextFormat textFormat; - - TextFormatBenchmarkBase(TextFormat textFormat) { - this.textFormat = textFormat; - } - - void inject(SpanContext spanContext, Map<String, String> carrier) { - textFormat.inject(spanContext, carrier, setter); - } - - SpanContext extract(Map<String, String> carrier) throws SpanContextParseException { - return textFormat.extract(carrier, getter); - } -} |