Skip to content

Commit 4dc9ae4

Browse files
committedDec 10, 2024··
benchmark deserialize multiple documents
1 parent cdce964 commit 4dc9ae4

File tree

1 file changed

+65
-4
lines changed

1 file changed

+65
-4
lines changed
 

‎test-perf/src/test/java/com/arangodb/SerdeBench.java

+65-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
package com.arangodb;
22

3+
import com.arangodb.entity.MultiDocumentEntity;
4+
import com.arangodb.internal.ArangoCollectionImpl;
5+
import com.arangodb.internal.ArangoDatabaseImpl;
6+
import com.arangodb.internal.ArangoExecutor;
7+
import com.arangodb.internal.InternalResponse;
38
import com.arangodb.internal.serde.InternalSerde;
49
import com.arangodb.internal.serde.InternalSerdeProvider;
510
import com.arangodb.jackson.dataformat.velocypack.VPackMapper;
@@ -25,6 +30,7 @@
2530
import org.openjdk.jmh.runner.options.OptionsBuilder;
2631

2732
import java.io.IOException;
33+
import java.net.URISyntaxException;
2834
import java.nio.file.Files;
2935
import java.nio.file.Path;
3036
import java.nio.file.Paths;
@@ -39,33 +45,74 @@
3945
@OutputTimeUnit(TimeUnit.MILLISECONDS)
4046
@Fork(1)
4147
public class SerdeBench {
48+
public static class MyCol extends ArangoCollectionImpl {
49+
static ArangoDB jsonAdb = new ArangoDB.Builder()
50+
.host("127.0.0.1", 8529)
51+
.protocol(Protocol.HTTP_JSON)
52+
.build();
53+
54+
static ArangoDB vpackAdb = new ArangoDB.Builder()
55+
.host("127.0.0.1", 8529)
56+
.protocol(Protocol.HTTP_VPACK)
57+
.build();
58+
59+
private MyCol(ArangoDB adb) {
60+
super((ArangoDatabaseImpl) adb.db(), "foo");
61+
}
62+
63+
public static MyCol ofJson() {
64+
return new MyCol(jsonAdb);
65+
}
66+
67+
public static MyCol ofVpack() {
68+
return new MyCol(vpackAdb);
69+
}
70+
71+
@Override
72+
public <T> ArangoExecutor.ResponseDeserializer<MultiDocumentEntity<T>> getDocumentsResponseDeserializer(Class<T> type) {
73+
return super.getDocumentsResponseDeserializer(type);
74+
}
75+
}
76+
4277
@State(Scope.Benchmark)
4378
public static class Data {
4479
public final byte[] vpack;
4580
public final byte[] json;
4681
public final RawBytes rawJsonBytes;
4782
public final RawBytes rawVPackBytes;
4883
public final RawJson rawJson;
84+
public final MyCol jsonCol = MyCol.ofJson();
85+
public final MyCol vpackCol = MyCol.ofVpack();
86+
public final InternalResponse jsonResp = new InternalResponse();
87+
public final InternalResponse vpackResp = new InternalResponse();
4988

5089
public Data() {
5190
ObjectMapper jsonMapper = new ObjectMapper();
5291
VPackMapper vpackMapper = new VPackMapper();
5392

5493
try {
55-
String str = new String(Files.readAllBytes(
56-
Paths.get(SerdeBench.class.getResource("/api-docs.json").toURI())));
57-
JsonNode jn = jsonMapper.readTree(str);
58-
94+
JsonNode jn = readFile("/api-docs.json", jsonMapper);
5995
json = jsonMapper.writeValueAsBytes(jn);
6096
vpack = vpackMapper.writeValueAsBytes(jn);
6197
rawJsonBytes = RawBytes.of(json);
6298
rawVPackBytes = RawBytes.of(vpack);
6399
rawJson = RawJson.of(jsonMapper.writeValueAsString(jsonMapper.readTree(json)));
64100

101+
JsonNode docs = readFile("/multi-docs.json", jsonMapper);
102+
jsonResp.setResponseCode(200);
103+
jsonResp.setBody(jsonMapper.writeValueAsBytes(docs));
104+
vpackResp.setResponseCode(200);
105+
vpackResp.setBody(vpackMapper.writeValueAsBytes(docs));
65106
} catch (Exception e) {
66107
throw new RuntimeException(e);
67108
}
68109
}
110+
111+
private JsonNode readFile(String filename, ObjectMapper mapper) throws IOException, URISyntaxException {
112+
String str = new String(Files.readAllBytes(
113+
Paths.get(SerdeBench.class.getResource(filename).toURI())));
114+
return mapper.readTree(str);
115+
}
69116
}
70117

71118
public static void main(String[] args) throws RunnerException, IOException {
@@ -122,4 +169,18 @@ public void extractBytesJson(Data data, Blackhole bh) {
122169
);
123170
}
124171

172+
@Benchmark
173+
public void deserializeDocsJson(Data data, Blackhole bh) {
174+
bh.consume(
175+
data.jsonCol.getDocumentsResponseDeserializer(RawBytes.class).deserialize(data.jsonResp)
176+
);
177+
}
178+
179+
@Benchmark
180+
public void deserializeDocsVPack(Data data, Blackhole bh) {
181+
bh.consume(
182+
data.vpackCol.getDocumentsResponseDeserializer(RawBytes.class).deserialize(data.vpackResp)
183+
);
184+
}
185+
125186
}

0 commit comments

Comments
 (0)
Please sign in to comment.