[
https://issues.apache.org/jira/browse/HBASE-14120?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Anoop Sam John updated HBASE-14120:
-----------------------------------
Resolution: Fixed
Hadoop Flags: Reviewed
Status: Resolved (was: Patch Available)
Pushed to master. Thanks for the review Ram.
> ByteBufferUtils#compareTo small optimization
> --------------------------------------------
>
> Key: HBASE-14120
> URL: https://issues.apache.org/jira/browse/HBASE-14120
> Project: HBase
> Issue Type: Sub-task
> Components: regionserver, Scanners
> Reporter: Anoop Sam John
> Assignee: Anoop Sam John
> Fix For: 2.0.0
>
> Attachments: HBASE-14120.patch
>
>
> We have it like
> {code}
> if (UnsafeAccess.isAvailable()) {
> long offset1Adj, offset2Adj;
> Object refObj1 = null, refObj2 = null;
> if (buf1.hasArray()) {
> offset1Adj = o1 + buf1.arrayOffset() +
> UnsafeAccess.BYTE_ARRAY_BASE_OFFSET;
> refObj1 = buf1.array();
> } else {
> offset1Adj = o1 + ((DirectBuffer) buf1).address();
> }
> if (buf2.hasArray()) {
> {code}
> Instead of hasArray() check we can have isDirect() check and reverse the if
> else block. Because we will be making BB backed cells when it is offheap BB.
> So when code reaches here for comparison, it will be direct BB.
> Doing JMH test proves it.
> {code}
> Benchmark Mode Cnt Score Error
> Units
> OnHeapVsOffHeapComparer.offheap thrpt 4 50516432.643 ± 651828.103
> ops/s
> OnHeapVsOffHeapComparer.offheapOld thrpt 4 37696698.093 ± 1121685.293
> ops/s
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)