Repository: hbase Updated Branches: refs/heads/master 18c9bb8b5 -> 5d2708f62
HBASE-14186 Read mvcc vlong optimization. Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/5d2708f6 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/5d2708f6 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/5d2708f6 Branch: refs/heads/master Commit: 5d2708f628d4718f6267e9da6c8cbafeda66f4fb Parents: 18c9bb8 Author: anoopsjohn <[email protected]> Authored: Thu Aug 6 10:16:51 2015 +0530 Committer: anoopsjohn <[email protected]> Committed: Thu Aug 6 10:16:51 2015 +0530 ---------------------------------------------------------------------- .../hadoop/hbase/io/hfile/HFileReaderImpl.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/5d2708f6/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.java index 82f5366..18240b1 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.java @@ -633,9 +633,22 @@ public class HFileReaderImpl implements HFile.Reader, Configurable { if (len == 1) { this.currMemstoreTS = firstByte; } else { + int remaining = len -1; long i = 0; offsetFromPos++; - for (int idx = 0; idx < len - 1; idx++) { + if (remaining >= Bytes.SIZEOF_INT) { + i = blockBuffer.getIntAfterPosition(offsetFromPos); + remaining -= Bytes.SIZEOF_INT; + offsetFromPos += Bytes.SIZEOF_INT; + } + if (remaining >= Bytes.SIZEOF_SHORT) { + short s = blockBuffer.getShortAfterPosition(offsetFromPos); + i = i << 16; + i = i | (s & 0xFFFF); + remaining -= Bytes.SIZEOF_SHORT; + offsetFromPos += Bytes.SIZEOF_SHORT; + } + for (int idx = 0; idx < remaining; idx++) { byte b = blockBuffer.getByteAfterPosition(offsetFromPos + idx); i = i << 8; i = i | (b & 0xFF);
