aboutsummaryrefslogtreecommitdiff
path: root/benchmarks
diff options
context:
space:
mode:
authorCarl Mastrangelo <notcarl@google.com>2017-07-13 15:42:27 -0700
committerGitHub <noreply@github.com>2017-07-13 15:42:27 -0700
commitb6449a14dd674f6fda595cfb09eaa987f94595cc (patch)
treed1a067b51185a88f24fa326f760a6ac5bfe738cd /benchmarks
parentd387bfe72fff7b89f2cf7ce09bca418feb322085 (diff)
downloadgrpc-grpc-java-b6449a14dd674f6fda595cfb09eaa987f94595cc.tar.gz
benchmarks: add initial context benchmarks
Diffstat (limited to 'benchmarks')
-rw-r--r--benchmarks/src/jmh/java/io/grpc/context/ContextBenchmark.java52
1 files changed, 52 insertions, 0 deletions
diff --git a/benchmarks/src/jmh/java/io/grpc/context/ContextBenchmark.java b/benchmarks/src/jmh/java/io/grpc/context/ContextBenchmark.java
new file mode 100644
index 000000000..dac0eeba2
--- /dev/null
+++ b/benchmarks/src/jmh/java/io/grpc/context/ContextBenchmark.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2016, gRPC Authors All rights reserved.
+ *
+ * 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.grpc.context;
+
+import io.grpc.Context;
+import io.grpc.Context.Key;
+import java.util.concurrent.TimeUnit;
+import org.openjdk.jmh.annotations.Benchmark;
+import org.openjdk.jmh.annotations.BenchmarkMode;
+import org.openjdk.jmh.annotations.GroupThreads;
+import org.openjdk.jmh.annotations.Mode;
+import org.openjdk.jmh.annotations.OutputTimeUnit;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+
+/** StatusBenchmark. */
+@State(Scope.Benchmark)
+public class ContextBenchmark {
+
+ private final Key<Integer> key = Context.keyWithDefault("key", 9999);
+ private final Context cu = Context.current().withValue(key, 8888);
+
+ /**
+ * Javadoc comment.
+ */
+ @Benchmark
+ @BenchmarkMode(Mode.SampleTime)
+ @OutputTimeUnit(TimeUnit.NANOSECONDS)
+ @GroupThreads(6)
+ public int attachDetach() {
+ Context old = cu.attach();
+ try {
+ return key.get();
+ } finally {
+ Context.current().detach(old);
+ }
+ }
+}