aboutsummaryrefslogtreecommitdiff
path: root/kamon-core-bench/src/main/scala/kamon/bench/ThreadLocalStorageBenchmark.scala
diff options
context:
space:
mode:
Diffstat (limited to 'kamon-core-bench/src/main/scala/kamon/bench/ThreadLocalStorageBenchmark.scala')
-rw-r--r--kamon-core-bench/src/main/scala/kamon/bench/ThreadLocalStorageBenchmark.scala30
1 files changed, 25 insertions, 5 deletions
diff --git a/kamon-core-bench/src/main/scala/kamon/bench/ThreadLocalStorageBenchmark.scala b/kamon-core-bench/src/main/scala/kamon/bench/ThreadLocalStorageBenchmark.scala
index e67a913e..1bd6f4ce 100644
--- a/kamon-core-bench/src/main/scala/kamon/bench/ThreadLocalStorageBenchmark.scala
+++ b/kamon-core-bench/src/main/scala/kamon/bench/ThreadLocalStorageBenchmark.scala
@@ -22,14 +22,23 @@ import kamon.context.Storage.Scope
import kamon.context.{Context, Key, Storage}
import org.openjdk.jmh.annotations._
-@State(Scope.Benchmark)
+@State(Scope.Thread)
class ThreadLocalStorageBenchmark {
- val TestKey: Key[Int] = Key.local("test-key", 0)
- val ContextWithKey: Context = Context.create().withKey(TestKey, 43)
+ var TestKey: Key[Int] = _
+ var ContextWithKey: Context = _
- val TLS: Storage = new OldThreadLocal
- val FTLS: Storage = new Storage.ThreadLocal
+ var TLS: Storage = _
+ var FTLS: Storage = _
+
+ @Setup
+ def setup() = {
+ TestKey = Key.local("test-key", 0)
+ ContextWithKey = Context.create().withKey(TestKey, 43)
+
+ TLS = new OldThreadLocal
+ FTLS = Storage.ThreadLocal()
+ }
@Benchmark
@@ -53,6 +62,17 @@ class ThreadLocalStorageBenchmark {
scope.close()
FTLS.current()
}
+
+ @Benchmark
+ @BenchmarkMode(Array(Mode.AverageTime))
+ @OutputTimeUnit(TimeUnit.NANOSECONDS)
+ @Fork(jvmArgsAppend = Array("-javaagent:library/kanela-agent-0.0.400.jar"))
+ def superFastThreadLocal: Context = {
+ val scope = FTLS.store(ContextWithKey)
+ FTLS.current()
+ scope.close()
+ FTLS.current()
+ }
}