Uploaded image for project: 'Apache Arrow'
  1. Apache Arrow
  2. ARROW-5221

Improvement the performance of class SegmentsUtil

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Minor
    • Resolution: Invalid
    • None
    • None
    • None
    • None

    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)

       

      Attachments

        Activity

          People

            fan_li_ya Liya Fan
            fan_li_ya Liya Fan
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: