From 621e8250c9535d773c4f4440a34ea0833912b51f Mon Sep 17 00:00:00 2001 From: Dan Halperin Date: Wed, 21 Dec 2016 15:37:49 -0800 Subject: [PATCH] [BEAM-XXX] Make KVCoder more efficient by removing unnecessary nesting See [BEAM-469] for more information about why this is correct. --- .../org/apache/beam/sdk/coders/KvCoder.java | 22 +++++++------------ 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/KvCoder.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/KvCoder.java index ad13226b05c43..c0d3aa46ffaf9 100644 --- a/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/KvCoder.java +++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/KvCoder.java @@ -83,17 +83,15 @@ public void encode(KV kv, OutputStream outStream, Context context) if (kv == null) { throw new CoderException("cannot encode a null KV"); } - Context nestedContext = context.nested(); - keyCoder.encode(kv.getKey(), outStream, nestedContext); - valueCoder.encode(kv.getValue(), outStream, nestedContext); + keyCoder.encode(kv.getKey(), outStream, context.nested()); + valueCoder.encode(kv.getValue(), outStream, context); } @Override public KV decode(InputStream inStream, Context context) throws IOException, CoderException { - Context nestedContext = context.nested(); - K key = keyCoder.decode(inStream, nestedContext); - V value = valueCoder.decode(inStream, nestedContext); + K key = keyCoder.decode(inStream, context.nested()); + V value = valueCoder.decode(inStream, context); return KV.of(key, value); } @@ -135,10 +133,8 @@ public CloudObject asCloudObject() { */ @Override public boolean isRegisterByteSizeObserverCheap(KV kv, Context context) { - return keyCoder.isRegisterByteSizeObserverCheap(kv.getKey(), - context.nested()) - && valueCoder.isRegisterByteSizeObserverCheap(kv.getValue(), - context.nested()); + return keyCoder.isRegisterByteSizeObserverCheap(kv.getKey(), context.nested()) + && valueCoder.isRegisterByteSizeObserverCheap(kv.getValue(), context); } /** @@ -152,9 +148,7 @@ public void registerByteSizeObserver( if (kv == null) { throw new CoderException("cannot encode a null KV"); } - keyCoder.registerByteSizeObserver( - kv.getKey(), observer, context.nested()); - valueCoder.registerByteSizeObserver( - kv.getValue(), observer, context.nested()); + keyCoder.registerByteSizeObserver(kv.getKey(), observer, context.nested()); + valueCoder.registerByteSizeObserver(kv.getValue(), observer, context); } }