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

Reply via email to