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

ChiaPing Tsai commented on HBASE-17233:
---------------------------------------

The big difference may be caused by JIT optimization. We should use static and 
final in the res1 and b1 so that JIT can leverage the memory for both methods. 
For example, the data can be prefetched because the input is never null.

> See if we should replace System.arrayCopy with Arrays.copyOfRange
> -----------------------------------------------------------------
>
>                 Key: HBASE-17233
>                 URL: https://issues.apache.org/jira/browse/HBASE-17233
>             Project: HBase
>          Issue Type: Improvement
>    Affects Versions: 2.0.0
>            Reporter: ramkrishna.s.vasudevan
>            Assignee: ramkrishna.s.vasudevan
>
> Just saw this interesting comment in PB code. Since we deal with byte[] 
> extensively (when we are onheap) we do lot of copies too.
> {code}
> * <p>One of the noticeable costs of copying a byte[] into a new array using
>    * {@code System.arraycopy} is nullification of a new buffer before the 
> copy. It has been shown
>    * the Hotspot VM is capable to intrisicfy {@code Arrays.copyOfRange} 
> operation to avoid this
>    * expensive nullification and provide substantial performance gain. 
> Unfortunately this does not
>    * hold on Android runtimes and could make the copy slightly slower due to 
> additional code in
>    * the {@code Arrays.copyOfRange}. 
> {code}
> So since we are hotspot VM we could see if the places we use System.arrayCopy 
> can be replaced with Arrays.copyOfRange.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to