Skip to content

Commit 28bc1e7

Browse files
authored
Merge pull request #172 from DataDog/tyler/benchmark
Improve benchmarks to highlight more interesting differences
2 parents 9fbe702 + e6895e4 commit 28bc1e7

File tree

11 files changed

+130
-62
lines changed

11 files changed

+130
-62
lines changed

dd-java-agent/benchmark/benchmark.gradle

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,12 @@ task jmhAgent(type: JavaExec, dependsOn: project.tasks.jmhCompileGeneratedClasse
6060
main = "org.openjdk.jmh.Main"
6161
args += ["-tu", "us"]
6262
args += ["-bm", "avgt"]
63-
args += ["-prof", "stack"]
64-
// args += ["-r", "5s"]
65-
// args += ["-i", "5"]
63+
// args += ["-prof", "stack:lines=5;detailLine=true;period=5;excludePackages=true"]
6664
args += ["-f", "1"]
6765
args += ["-foe", "true"]
68-
// args += ["-w", "2s"]
66+
6967
// args += ["-wi", "2"]
68+
// args += ["-i", "5"]
7069
}
7170

7271
tasks.jmhAgent.dependsOn project(':dd-java-agent').shadowJar

dd-java-agent/benchmark/src/jmh/java/com/datadoghq/benchmark/ClassRetransformingBenchmark.java

Lines changed: 7 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.datadoghq.benchmark;
22

3-
import com.datadoghq.trace.Trace;
3+
import com.datadoghq.benchmark.classes.TracedClass;
4+
import com.datadoghq.benchmark.classes.UntracedClass;
45
import java.lang.instrument.Instrumentation;
56
import java.lang.instrument.UnmodifiableClassException;
67
import java.lang.reflect.Field;
@@ -53,18 +54,14 @@ public void stopAgent() {
5354
}
5455

5556
@Benchmark
56-
public void testIgnoredRetransform(final BenchmarkState state) throws UnmodifiableClassException {
57-
state.inst.retransformClasses(Object.class);
57+
public void testUntracedRetransform(final BenchmarkState state)
58+
throws UnmodifiableClassException {
59+
state.inst.retransformClasses(UntracedClass.class);
5860
}
5961

6062
@Benchmark
61-
public void testSimpleRetransform(final BenchmarkState state) throws UnmodifiableClassException {
62-
state.inst.retransformClasses(SimpleClass.class);
63-
}
64-
65-
@Benchmark
66-
public void testDeepRetransform(final BenchmarkState state) throws UnmodifiableClassException {
67-
state.inst.retransformClasses(DeepClass.class);
63+
public void testTracedRetransform(final BenchmarkState state) throws UnmodifiableClassException {
64+
state.inst.retransformClasses(TracedClass.class);
6865
}
6966

7067
@Fork(jvmArgsAppend = "-javaagent:releases/dd-java-agent-0.2.2.jar")
@@ -90,34 +87,4 @@ public static class WithAgent0210 extends ClassRetransformingBenchmark {}
9087

9188
@Fork(jvmArgsAppend = "-javaagent:../build/libs/dd-java-agent.jar")
9289
public static class WithAgent extends ClassRetransformingBenchmark {}
93-
94-
public static class SimpleClass {
95-
@Trace
96-
public void aMethodToTrace() {}
97-
}
98-
99-
public static interface A {
100-
@Trace
101-
void interfaceTrace();
102-
}
103-
104-
public static interface B extends A {
105-
void something();
106-
}
107-
108-
public static interface C extends B {
109-
void somethingElse();
110-
}
111-
112-
public static class DeepClass implements C {
113-
114-
@Override
115-
public void interfaceTrace() {}
116-
117-
@Override
118-
public void something() {}
119-
120-
@Override
121-
public void somethingElse() {}
122-
}
12390
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.datadoghq.benchmark.classes;
2+
3+
public interface A {
4+
void a();
5+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.datadoghq.benchmark.classes;
2+
3+
public interface B extends A {
4+
void b();
5+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.datadoghq.benchmark.classes;
2+
3+
public interface C extends B {
4+
void c();
5+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.datadoghq.benchmark.classes;
2+
3+
public interface D extends C {
4+
void d();
5+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.datadoghq.benchmark.classes;
2+
3+
public interface E extends D {
4+
void e();
5+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.datadoghq.benchmark.classes;
2+
3+
public abstract class F implements E {
4+
public abstract void f();
5+
6+
public void g() {}
7+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.datadoghq.benchmark.classes;
2+
3+
import com.datadoghq.trace.Trace;
4+
5+
public class TracedClass extends UntracedClass {
6+
@Trace
7+
@Override
8+
public void f() {}
9+
10+
@Trace
11+
@Override
12+
public void e() {}
13+
14+
@Trace
15+
@Override
16+
public void d() {}
17+
18+
@Trace
19+
@Override
20+
public void c() {}
21+
22+
@Trace
23+
@Override
24+
public void b() {}
25+
26+
@Trace
27+
@Override
28+
public void a() {}
29+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.datadoghq.benchmark.classes;
2+
3+
public class UntracedClass extends F {
4+
@Override
5+
public void f() {}
6+
7+
@Override
8+
public void e() {}
9+
10+
@Override
11+
public void d() {}
12+
13+
@Override
14+
public void c() {}
15+
16+
@Override
17+
public void b() {}
18+
19+
@Override
20+
public void a() {}
21+
}

0 commit comments

Comments
 (0)