[ https://issues.apache.org/jira/browse/HBASE-14186?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14654779#comment-14654779 ]
Anoop Sam John commented on HBASE-14186: ---------------------------------------- bq.Is it possible, that we could come in here and there'd only be a short amount to read so we'd skip the SIZEOF_INT parens? if so, the shift by 16 bits in the second paren would be not needed (might not be a problem if left shifting 0) Yes shifting 0 is not a problem apart from this is an unwanted op. But I think it is ok. The mvcc will be either 0 or some larger value with more than 4 bytes. > Read mvcc vlong optimization > ---------------------------- > > Key: HBASE-14186 > URL: https://issues.apache.org/jira/browse/HBASE-14186 > Project: HBase > Issue Type: Sub-task > Components: Scanners > Reporter: Anoop Sam John > Assignee: Anoop Sam John > Fix For: 2.0.0 > > Attachments: HBASE-14186.patch > > > {code} > for (int idx = 0; idx < remaining; idx++) { > byte b = blockBuffer.getByteAfterPosition(offsetFromPos + idx); > i = i << 8; > i = i | (b & 0xFF); > } > {code} > Doing the read as in case of BIG_ENDIAN. > After HBASE-12600, we tend to keep the mvcc and so byte by byte read looks > eating up lot of CPU time. (In my test HFileReaderImpl#_readMvccVersion comes > on top in terms of hot methods). We can optimize here by reading 4 or 2 bytes > in one shot when the length of the vlong is more than 4 bytes. We will in > turn use UnsafeAccess methods which handles ENDIAN. -- This message was sent by Atlassian JIRA (v6.3.4#6332)