Skip to content

Commit 563b007

Browse files
committed
add benchmark jmh
1 parent 96b6f72 commit 563b007

File tree

3 files changed

+111
-0
lines changed

3 files changed

+111
-0
lines changed

performance-test/pom.xml

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xmlns="http://maven.apache.org/POM/4.0.0"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<parent>
6+
<artifactId>kafka-connect-transformers</artifactId>
7+
<groupId>seko</groupId>
8+
<version>1.0-SNAPSHOT</version>
9+
</parent>
10+
<modelVersion>4.0.0</modelVersion>
11+
12+
<artifactId>performance-test</artifactId>
13+
14+
<dependencies>
15+
<dependency>
16+
<groupId>org.openjdk.jmh</groupId>
17+
<artifactId>jmh-core</artifactId>
18+
<version>1.21</version>
19+
</dependency>
20+
<dependency>
21+
<groupId>org.openjdk.jmh</groupId>
22+
<artifactId>jmh-generator-annprocess</artifactId>
23+
<version>1.21</version>
24+
</dependency>
25+
<dependency>
26+
<groupId>seko</groupId>
27+
<artifactId>shared</artifactId>
28+
<version>1.0-SNAPSHOT</version>
29+
</dependency>
30+
<dependency>
31+
<groupId>seko</groupId>
32+
<artifactId>python-transformer</artifactId>
33+
<version>1.0-SNAPSHOT</version>
34+
<scope>test</scope>
35+
</dependency>
36+
<dependency>
37+
<groupId>seko</groupId>
38+
<artifactId>groovy-transformer</artifactId>
39+
<version>1.0-SNAPSHOT</version>
40+
<scope>test</scope>
41+
</dependency>
42+
<dependency>
43+
<groupId>seko</groupId>
44+
<artifactId>js-transformer</artifactId>
45+
<version>1.0-SNAPSHOT</version>
46+
<scope>test</scope>
47+
</dependency>
48+
</dependencies>
49+
50+
</project>
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package seko.kafka.connect.transformer.jmh.tests;
2+
3+
4+
import org.apache.kafka.connect.source.SourceRecord;
5+
import org.apache.kafka.connect.transforms.util.Requirements;
6+
import org.openjdk.jmh.annotations.*;
7+
import seko.kafka.connect.transformer.python.GroovyTransformer;
8+
import seko.kafka.connect.transformer.python.JavaScriptTransformer;
9+
import seko.kafka.connect.transformer.python.PythonTransformer;
10+
import seko.kafka.connect.transformer.script.configs.Configuration;
11+
12+
import java.util.HashMap;
13+
import java.util.Map;
14+
import java.util.concurrent.TimeUnit;
15+
16+
@BenchmarkMode(Mode.AverageTime)
17+
@OutputTimeUnit(TimeUnit.NANOSECONDS)
18+
@State(Scope.Benchmark)
19+
@Fork(value = 2, jvmArgs = {"-Xms2G", "-Xmx2G"})
20+
//@Warmup(iterations = 3)
21+
//@Measurement(iterations = 8)
22+
public class TransformersTest {
23+
private final PythonTransformer<SourceRecord> pythonTransformer = new PythonTransformer<>();
24+
private final GroovyTransformer<SourceRecord> groovyTransformer = new GroovyTransformer<>();
25+
private final JavaScriptTransformer<SourceRecord> jsTransformer = new JavaScriptTransformer<>();
26+
private Map<String, Object> config;
27+
@Param({"10000000"})
28+
private int N;
29+
private Map<String, Object> event;
30+
31+
@Setup
32+
public void setup() {
33+
config = new HashMap<>();
34+
config.put(Configuration.KEY_SCRIPT_CONFIG, "source['qweqweq'] = 12312312; source");
35+
config.put(Configuration.VALUE_SCRIPT_CONFIG, "source['qweqweq'] = 12312312; source");
36+
pythonTransformer.configure(config);
37+
groovyTransformer.configure(config);
38+
jsTransformer.configure(config);
39+
event = new HashMap<>();
40+
event.put("created_when", "2019-05-31T00:17:00.188Z");
41+
}
42+
43+
@Benchmark
44+
public void jsTransformer() {
45+
SourceRecord transformed = jsTransformer.apply(new SourceRecord(null, null, "topic", 0, null, event));
46+
Map<String, Object> stringObjectMap = Requirements.requireMapOrNull(transformed.value(), "");
47+
}
48+
49+
@Benchmark
50+
public void groovyTransformer() {
51+
SourceRecord transformed = groovyTransformer.apply(new SourceRecord(null, null, "topic", 0, null, event));
52+
Map<String, Object> stringObjectMap = Requirements.requireMapOrNull(transformed.value(), "");
53+
}
54+
55+
@Benchmark
56+
public void pythonTransformer() {
57+
SourceRecord transformed = pythonTransformer.apply(new SourceRecord(null, null, "topic", 0, null, event));
58+
Map<String, Object> stringObjectMap = Requirements.requireMapOrNull(transformed.value(), "");
59+
}
60+
}

pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
<module>python-transformer</module>
1414
<module>js-transformer</module>
1515
<module>shared</module>
16+
<module>performance-test</module>
1617
</modules>
1718

1819

0 commit comments

Comments
 (0)