Skip to content

Commit 6c4e4d7

Browse files
committed
add jmh
1 parent 7618bbb commit 6c4e4d7

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package datadog.trace.core;
2+
3+
import static java.util.concurrent.TimeUnit.MICROSECONDS;
4+
import static java.util.concurrent.TimeUnit.SECONDS;
5+
6+
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
7+
import java.util.WeakHashMap;
8+
import org.openjdk.jmh.annotations.Benchmark;
9+
import org.openjdk.jmh.annotations.BenchmarkMode;
10+
import org.openjdk.jmh.annotations.Fork;
11+
import org.openjdk.jmh.annotations.Level;
12+
import org.openjdk.jmh.annotations.Measurement;
13+
import org.openjdk.jmh.annotations.Mode;
14+
import org.openjdk.jmh.annotations.OutputTimeUnit;
15+
import org.openjdk.jmh.annotations.Param;
16+
import org.openjdk.jmh.annotations.Scope;
17+
import org.openjdk.jmh.annotations.Setup;
18+
import org.openjdk.jmh.annotations.State;
19+
import org.openjdk.jmh.annotations.Warmup;
20+
import org.openjdk.jmh.infra.Blackhole;
21+
22+
@State(Scope.Benchmark)
23+
@Warmup(iterations = 1, time = 15, timeUnit = SECONDS)
24+
@Measurement(iterations = 3, time = 30, timeUnit = SECONDS)
25+
@BenchmarkMode(Mode.AverageTime)
26+
@OutputTimeUnit(MICROSECONDS)
27+
@Fork(value = 1)
28+
/**
29+
* Benchmark (simulateOverhead) Mode Cnt Score Error Units
30+
* CoreTracerClassloaderNamingBenchmark.benchSpanCreation false avgt 3 0.747 ± 0.040 us/op
31+
* CoreTracerClassloaderNamingBenchmark.benchSpanCreation true avgt 3 0.695 ± 0.106 us/op
32+
*/
33+
public class CoreTracerClassloaderNamingBenchmark {
34+
CoreTracer tracer;
35+
36+
WeakHashMap<ClassLoader, String> weakCache;
37+
38+
@Param({"false", "true"})
39+
boolean simulateOverhead;
40+
41+
@Setup(Level.Iteration)
42+
public void init(Blackhole blackhole) {
43+
tracer =
44+
CoreTracer.builder()
45+
.writer(new BlackholeWriter(blackhole, new TraceCounters(), 0))
46+
.strictTraceWrites(false)
47+
.build();
48+
weakCache = new WeakHashMap<>();
49+
weakCache.put(Thread.currentThread().getContextClassLoader(), "test");
50+
}
51+
52+
@Benchmark
53+
public void benchSpanCreation(Blackhole blackhole) {
54+
final AgentSpan span = tracer.startSpan("", "");
55+
if (simulateOverhead) {
56+
// simulates an extra getContextClassLoader + a WeakHashMap.get
57+
weakCache.get(Thread.currentThread().getContextClassLoader());
58+
}
59+
span.finish();
60+
blackhole.consume(span);
61+
}
62+
}

0 commit comments

Comments
 (0)