summaryrefslogtreecommitdiffstats
path: root/vespajlib/src/main/java/com/yahoo/tensor
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@yahoo-inc.com>2017-01-10 15:03:02 +0100
committerJon Bratseth <bratseth@yahoo-inc.com>2017-01-10 15:03:02 +0100
commit14a0470694ea7f24b8ef007783432a6f532e42ba (patch)
treeccdc94ca5a32fc9f7cf960a772dbf6f9b539d14c /vespajlib/src/main/java/com/yahoo/tensor
parentdb983b09c9f0ce597f5cf63d9ef6b0ebf20627e0 (diff)
Move string encoding decoding to GrowableByteBuffer
Diffstat (limited to 'vespajlib/src/main/java/com/yahoo/tensor')
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/serialization/DenseBinaryFormat.java17
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/serialization/SparseBinaryFormat.java23
2 files changed, 7 insertions, 33 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/serialization/DenseBinaryFormat.java b/vespajlib/src/main/java/com/yahoo/tensor/serialization/DenseBinaryFormat.java
index 4d4d947557d..c3284131be0 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/serialization/DenseBinaryFormat.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/serialization/DenseBinaryFormat.java
@@ -34,7 +34,7 @@ public class DenseBinaryFormat implements BinaryFormat {
private void encodeDimensions(GrowableByteBuffer buffer, IndexedTensor tensor) {
buffer.putInt1_4Bytes(tensor.type().dimensions().size());
for (int i = 0; i < tensor.type().dimensions().size(); i++) {
- encodeString(buffer, tensor.type().dimensions().get(i).name());
+ buffer.putUtf8String(tensor.type().dimensions().get(i).name());
buffer.putInt1_4Bytes(tensor.dimensionSizes().size(i));
}
}
@@ -50,12 +50,6 @@ public class DenseBinaryFormat implements BinaryFormat {
}
}
- private void encodeString(GrowableByteBuffer buffer, String value) {
- byte[] stringBytes = Utf8.toBytes(value);
- buffer.putInt1_4Bytes(stringBytes.length);
- buffer.put(stringBytes);
- }
-
@Override
public Tensor decode(TensorType type, GrowableByteBuffer buffer) {
DimensionSizes sizes = decodeDimensionSizes(type, buffer);
@@ -74,7 +68,7 @@ public class DenseBinaryFormat implements BinaryFormat {
for (int i = 0; i < dimensionCount; i++) {
TensorType.Dimension expectedDimension = type.dimensions().get(i);
- String encodedName = decodeString(buffer);
+ String encodedName = buffer.getUtf8String();
int encodedSize = buffer.getInt1_4Bytes();
if ( ! expectedDimension.name().equals(encodedName))
@@ -95,11 +89,4 @@ public class DenseBinaryFormat implements BinaryFormat {
builder.cellByDirectIndex(i, buffer.getDouble());
}
- private String decodeString(GrowableByteBuffer buffer) {
- int stringLength = buffer.getInt1_4Bytes();
- byte[] stringBytes = new byte[stringLength];
- buffer.get(stringBytes);
- return Utf8.toString(stringBytes);
- }
-
}
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/serialization/SparseBinaryFormat.java b/vespajlib/src/main/java/com/yahoo/tensor/serialization/SparseBinaryFormat.java
index 612df272b6f..30b36e83457 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/serialization/SparseBinaryFormat.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/serialization/SparseBinaryFormat.java
@@ -34,7 +34,7 @@ class SparseBinaryFormat implements BinaryFormat {
private void encodeDimensions(GrowableByteBuffer buffer, List<TensorType.Dimension> sortedDimensions) {
buffer.putInt1_4Bytes(sortedDimensions.size());
for (TensorType.Dimension dimension : sortedDimensions) {
- encodeString(buffer, dimension.name());
+ buffer.putUtf8String(dimension.name());
}
}
@@ -49,13 +49,7 @@ class SparseBinaryFormat implements BinaryFormat {
private void encodeAddress(GrowableByteBuffer buffer, TensorAddress address) {
for (int i = 0; i < address.size(); i++)
- encodeString(buffer, address.label(i));
- }
-
- private void encodeString(GrowableByteBuffer buffer, String value) {
- byte[] stringBytes = Utf8.toBytes(value);
- buffer.putInt1_4Bytes(stringBytes.length);
- buffer.put(stringBytes);
+ buffer.putUtf8String(address.label(i));
}
@Override
@@ -73,7 +67,7 @@ class SparseBinaryFormat implements BinaryFormat {
TensorType.Builder builder = new TensorType.Builder();
int numDimensions = buffer.getInt1_4Bytes();
for (int i = 0; i < numDimensions; ++i) {
- builder.mapped(decodeString(buffer));
+ builder.mapped(buffer.getUtf8String());
}
return builder.build();
}
@@ -86,7 +80,7 @@ class SparseBinaryFormat implements BinaryFormat {
for (int i = 0; i < dimensionCount; ++i) {
TensorType.Dimension expectedDimension = type.dimensions().get(i);
- String encodedName = decodeString(buffer);
+ String encodedName = buffer.getUtf8String();
if ( ! expectedDimension.name().equals(encodedName))
throw new IllegalArgumentException("Type/instance mismatch: Instance has '" + encodedName +
"' as dimension " + i + " but type is " + type);
@@ -104,18 +98,11 @@ class SparseBinaryFormat implements BinaryFormat {
private void decodeAddress(GrowableByteBuffer buffer, Tensor.Builder.CellBuilder builder, TensorType type) {
for (TensorType.Dimension dimension : type.dimensions()) {
- String label = decodeString(buffer);
+ String label = buffer.getUtf8String();
if ( ! label.isEmpty()) {
builder.label(dimension.name(), label);
}
}
}
- private String decodeString(GrowableByteBuffer buffer) {
- int stringLength = buffer.getInt1_4Bytes();
- byte[] stringBytes = new byte[stringLength];
- buffer.get(stringBytes);
- return Utf8.toString(stringBytes);
- }
-
}