You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@arrow.apache.org by "Liya Fan (JIRA)" <ji...@apache.org> on 2019/04/26 09:37:00 UTC
[jira] [Created] (ARROW-5221) Improvement the performance of class
SegmentsUtil
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)