Skip to content

Commit 3ff5b4f

Browse files
authored
Merge pull request #50 from cognitect/issue-48
[Perf] Do not make multiple calls to `MessageUnpacker.getNextFormat()`
2 parents 7d7bd09 + aece08e commit 3ff5b4f

1 file changed

Lines changed: 6 additions & 4 deletions

File tree

src/main/java/com/cognitect/transit/impl/MsgpackParser.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,11 @@ public Object parseMap(boolean ignored, ReadCache cache, MapReadHandler<Object,
7474
ReadHandler<Object, Object> val_handler = getHandler(tag);
7575
Object val;
7676
if (val_handler != null) {
77-
if (this.mp.getNextFormat().getValueType() == ValueType.MAP && val_handler instanceof MapReadHandler) {
77+
ValueType next = this.mp.getNextFormat().getValueType();
78+
if (next == ValueType.MAP && val_handler instanceof MapReadHandler) {
7879
// use map reader to decode value
7980
val = parseMap(false, cache, (MapReadHandler<Object, ?, Object, Object, ?>) val_handler);
80-
} else if (this.mp.getNextFormat().getValueType() == ValueType.ARRAY && val_handler instanceof ArrayReadHandler) {
81+
} else if (next == ValueType.ARRAY && val_handler instanceof ArrayReadHandler) {
8182
// use array reader to decode value
8283
val = parseArray(false, cache, (ArrayReadHandler<Object, ?, Object, ?>) val_handler);
8384
} else {
@@ -114,10 +115,11 @@ public Object parseArray(boolean ignored, ReadCache cache, ArrayReadHandler<Obje
114115
String tag = ((Tag) val).getValue();
115116
ReadHandler<Object, Object> val_handler = getHandler(tag);
116117
if (val_handler != null) {
117-
if (this.mp.getNextFormat().getValueType() == ValueType.MAP && val_handler instanceof MapReadHandler) {
118+
ValueType next = this.mp.getNextFormat().getValueType();
119+
if (next == ValueType.MAP && val_handler instanceof MapReadHandler) {
118120
// use map reader to decode value
119121
val = parseMap(false, cache, (MapReadHandler<Object, ?, Object, Object, ?>) val_handler);
120-
} else if (this.mp.getNextFormat().getValueType() == ValueType.ARRAY && val_handler instanceof ArrayReadHandler) {
122+
} else if (next == ValueType.ARRAY && val_handler instanceof ArrayReadHandler) {
121123
// use array reader to decode value
122124
val = parseArray(false, cache, (ArrayReadHandler<Object, ?, Object, ?>) val_handler);
123125
} else {

0 commit comments

Comments
 (0)