[ 
https://issues.apache.org/jira/browse/HBASE-14120?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14633437#comment-14633437
 ] 

Anoop Sam John commented on HBASE-14120:
----------------------------------------

I don't think test issues are related to this patch.  Will commit now..

When the method was first implemented, I forgot apply this change in if 
condition check in the patch.  I had done that change in my JMH env at the time 
of perf experiments.  My bad.. again noticed it is this way after some days.

> 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)

Reply via email to