[ https://issues.apache.org/jira/browse/HBASE-6621?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13439085#comment-13439085 ]
Lars Hofhansl commented on HBASE-6621: -------------------------------------- Here's another observation. In ScanQueryMatcher.match we have this: {code} byte [] bytes = kv.getBuffer(); int offset = kv.getOffset(); int initialOffset = offset; int keyLength = Bytes.toInt(bytes, offset, Bytes.SIZEOF_INT); {code} At this point the passed kv already has its keyLength cached. So we can use {code}int keyLength = kv.getKeyLength();{code} instead a save a few more cycles. This has measurable effect with many columns (~3%). A simple 1-line change. Any opposition doing this here as well, or should I open a new issue. > Reduce calls to Bytes.toInt > --------------------------- > > Key: HBASE-6621 > URL: https://issues.apache.org/jira/browse/HBASE-6621 > Project: HBase > Issue Type: Bug > Reporter: Lars Hofhansl > Assignee: Lars Hofhansl > Priority: Minor > Fix For: 0.96.0, 0.94.2 > > Attachments: 6621-0.96.txt, 6621-0.96-v2.txt, 6621-0.96-v3.txt, > 6621-0.96-v4.txt > > > Bytes.toInt shows up quite often in a profiler run. > It turns out that one source is HFileReaderV2$ScannerV2.getKeyValue(). > Notice that we call the KeyValue(byte[], int) constructor, which forces the > constructor to determine its size by reading some of the header information > and calculate the size. In this case, however, we already know the size (from > the call to readKeyValueLen), so we could just use that. > In the extreme case of 10000's of columns this noticeably reduces CPU. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira