Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit bb0caf9

Browse files
committed
benchmark deserialize multiple documents
1 parent 2aeb489 commit bb0caf9

File tree

2 files changed

+784
-4
lines changed

2 files changed

+784
-4
lines changed

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

Lines changed: 65 additions & 4 deletions
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)

AltStyle によって変換されたページ (->オリジナル) /