Liya Fan created ARROW-5221:
-------------------------------

             Summary: Improvement the performance of class SegmentsUtil
                 Key: ARROW-5221
                 URL: https://issues.apache.org/jira/browse/ARROW-5221
             Project: Apache Arrow
          Issue Type: Improvement
            Reporter: Liya Fan
            Assignee: Liya Fan


Improve the performance of class SegmentsUtil from two points:
 # In method allocateReuseBytes, the generated byte array should be cached for 
reuse, if the size does not exceed MAX_BYTES_LENGTH. However, the array is not 
cached if bytes.length < length, and this will lead to performance overhead:

 

if (bytes == null) {
  if (length <= MAX_BYTES_LENGTH) {
    bytes = new byte[MAX_BYTES_LENGTH];
    BYTES_LOCAL.set(bytes);
  } else {
    bytes = new byte[length];
  }
 } else if (bytes.length < length) {
  bytes = new byte[length];
 }

 

2. To evaluate the offset, an integer is bitand with a mask to clear to low 
bits, and then shift right. The bitand is useless:

 

((index & BIT_BYTE_POSITION_MASK) >>> 3)

 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to