[
https://issues.apache.org/jira/browse/FLINK-12335?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Liya Fan updated FLINK-12335:
-----------------------------
Description:
Improve the performance of class SegmentsUtil from two points:
1. 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)
was:
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)
> Improvement the performance of class SegmentsUtil
> -------------------------------------------------
>
> Key: FLINK-12335
> URL: https://issues.apache.org/jira/browse/FLINK-12335
> Project: Flink
> Issue Type: Improvement
> Components: Table SQL / Runtime
> Reporter: Liya Fan
> Assignee: Liya Fan
> Priority: Minor
>
> Improve the performance of class SegmentsUtil from two points:
> 1. 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)