Anoop Sam John created HBASE-14120:
--------------------------------------
Summary: ByteBufferUtils#compareTo small optimization
Key: HBASE-14120
URL: https://issues.apache.org/jira/browse/HBASE-14120
Project: HBase
Issue Type: Sub-task
Reporter: Anoop Sam John
Assignee: Anoop Sam John
Fix For: 2.0.0
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)