Skip to content

Commit d58275d

Browse files
authored
Avoid array allocation in node serializer (#72)
* Parallel node serialization. * Increase autocommit buffer size * Avoid array allocation in node serializer.
1 parent 26bea33 commit d58275d

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

tinkerpop3/src/main/java/io/shiftleft/overflowdb/OdbNode.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,11 @@ public int[] getEdgeOffsets() {
7777
return edgeOffsets.toIntArray();
7878
}
7979

80+
public PackedIntArray getEdgeOffsetsPackedArray() {
81+
return edgeOffsets;
82+
}
83+
84+
8085
public void setEdgeOffsets(int[] edgeOffsets) {
8186
this.edgeOffsets = PackedIntArray.of(edgeOffsets);
8287
}

tinkerpop3/src/main/java/io/shiftleft/overflowdb/storage/NodeSerializer.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import io.shiftleft.overflowdb.NodeRef;
44
import io.shiftleft.overflowdb.OdbNode;
5+
import io.shiftleft.overflowdb.util.PackedIntArray;
56
import org.apache.commons.lang3.NotImplementedException;
67
import org.msgpack.core.MessageBufferPacker;
78
import org.msgpack.core.MessagePack;
@@ -29,7 +30,7 @@ public byte[] serialize(OdbNode node) throws IOException {
2930
packer.packInt(node.layoutInformation().labelId);
3031

3132
packProperties(packer, node.valueMap());
32-
packEdgeOffsets(packer, node.getEdgeOffsets());
33+
packEdgeOffsets(packer, node.getEdgeOffsetsPackedArray());
3334
packAdjacentNodesWithProperties(packer, node.getAdjacentNodesWithProperties());
3435

3536
serializedCount++;
@@ -54,10 +55,10 @@ private void packProperties(MessageBufferPacker packer, Map<String, Object> prop
5455
}
5556
}
5657

57-
private void packEdgeOffsets(MessageBufferPacker packer, int[] edgeOffsets) throws IOException {
58-
packer.packArrayHeader(edgeOffsets.length);
59-
for (int i = 0; i < edgeOffsets.length; i++) {
60-
packer.packInt(edgeOffsets[i]);
58+
private void packEdgeOffsets(MessageBufferPacker packer, PackedIntArray edgeOffsets) throws IOException {
59+
packer.packArrayHeader(edgeOffsets.length());
60+
for (int i = 0; i < edgeOffsets.length(); i++) {
61+
packer.packInt(edgeOffsets.get(i));
6162
}
6263
}
6364

0 commit comments

Comments
 (0)