diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-08-30 16:51:11 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-08-30 16:51:11 +0200 |
commit | 99531f22f32354317cc3dff9e5d48730270aafa7 (patch) | |
tree | bb33ab9c9f39eb4fd764a51f3a9b143bc5928a87 /vespajlib/src/main/java/com/yahoo/slime/BinaryEncoder.java | |
parent | beea81233a2b9334aac10ed32d14ad9ad8f73d9a (diff) |
Avoid copying data just to compress them when it is not necessary.
Diffstat (limited to 'vespajlib/src/main/java/com/yahoo/slime/BinaryEncoder.java')
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/slime/BinaryEncoder.java | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/slime/BinaryEncoder.java b/vespajlib/src/main/java/com/yahoo/slime/BinaryEncoder.java index 4d9fdbba6d4..8f654b46032 100644 --- a/vespajlib/src/main/java/com/yahoo/slime/BinaryEncoder.java +++ b/vespajlib/src/main/java/com/yahoo/slime/BinaryEncoder.java @@ -1,28 +1,30 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.slime; -import static com.yahoo.slime.BinaryFormat.*; +import static com.yahoo.slime.BinaryFormat.encode_double; +import static com.yahoo.slime.BinaryFormat.encode_type_and_meta; +import static com.yahoo.slime.BinaryFormat.encode_zigzag; final class BinaryEncoder implements ArrayTraverser, ObjectSymbolTraverser { - BufferedOutput out; + private final BufferedOutput out; - public BinaryEncoder(int capacity) { - out = new BufferedOutput(capacity); + BinaryEncoder() { + this(new BufferedOutput()); } - - public BinaryEncoder() { - out = new BufferedOutput(); + BinaryEncoder(BufferedOutput output) { + out = output; } - public byte[] encode(Slime slime) { + BufferedOutput encode(Slime slime) { out.reset(); encodeSymbolTable(slime); encodeValue(slime.get()); - return out.toArray(); + return out; } + void encode_cmpr_long(long value) { byte next = (byte)(value & 0x7f); value >>>= 7; // unsigned shift |