Skip to content

Commit 0e5b111

Browse files
committed
[Java] Reduce processing and allocation when dealing with empty var data strings.
1 parent 2a99625 commit 0e5b111

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/java/JavaGenerator.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -791,7 +791,11 @@ private void generateDataDecodeMethods(
791791
indent + " final int headerLength = %3$d;\n" +
792792
indent + " final int limit = parentMessage.limit();\n" +
793793
indent + " final int dataLength = (int)%4$s;\n" +
794-
indent + " parentMessage.limit(limit + headerLength + dataLength);\n" +
794+
indent + " parentMessage.limit(limit + headerLength + dataLength);\n\n" +
795+
indent + " if (0 == dataLength)\n" +
796+
indent + " {\n" +
797+
indent + " return \"\";\n" +
798+
indent + " }\n\n" +
795799
indent + " final byte[] tmp = new byte[dataLength];\n" +
796800
indent + " buffer.getBytes(limit + headerLength, tmp, 0, dataLength);\n\n" +
797801
indent + " final String value;\n" +
@@ -884,7 +888,7 @@ private void generateDataEncodeMethods(
884888
indent + " final byte[] bytes;\n" +
885889
indent + " try\n" +
886890
indent + " {\n" +
887-
indent + " bytes = value.getBytes(\"%3$s\");\n" +
891+
indent + " bytes = value.isEmpty() ? new byte[0] : value.getBytes(\"%3$s\");\n" +
888892
indent + " }\n" +
889893
indent + " catch (final java.io.UnsupportedEncodingException ex)\n" +
890894
indent + " {\n" +

0 commit comments

Comments
 (0)