diff options
author | Jon Bratseth <bratseth@yahoo-inc.com> | 2017-01-10 15:03:02 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@yahoo-inc.com> | 2017-01-10 15:03:02 +0100 |
commit | 14a0470694ea7f24b8ef007783432a6f532e42ba (patch) | |
tree | ccdc94ca5a32fc9f7cf960a772dbf6f9b539d14c /vespajlib/src/main/java/com/yahoo/tensor | |
parent | db983b09c9f0ce597f5cf63d9ef6b0ebf20627e0 (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.java | 17 | ||||
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/tensor/serialization/SparseBinaryFormat.java | 23 |
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); - } - } |