Uploaded image for project: 'Lucene - Core'
  1. Lucene - Core
  2. LUCENE-435

[PATCH] BufferedIndexOutput - optimized writeBytes() method

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: core/store
    • Labels:
      None

      Description

      I have created a patch that optimize writeBytes metod:

      public void writeBytes(byte[] b, int length) throws IOException {
      if (bufferPosition > 0) // flush buffer
      flush();

      if (length < BUFFER_SIZE)

      { flushBuffer(b, length); bufferStart += length; }

      else {
      int pos = 0;
      int size;
      while (pos < length) {
      if (length - pos < BUFFER_SIZE)

      { size = length - pos; }

      else

      { size = BUFFER_SIZE; }

      System.arraycopy(b, pos, buffer, 0, size);
      pos += size;
      flushBuffer(buffer, size);
      bufferStart += size;
      }
      }
      }

      Its a much more faster now. I know that for indexing this not help much, but for copying files in the IndexStore this is so big improvement. Its about 400% faster that old implementation.

      The patch was tested with 300MB data, "ant test" sucessfuly finished with no errors.

        Attachments

        1. BufferedIndexOutputWriteBytes.patch
          1 kB
          Lukas Zapletal
        2. fastWrite.patch
          6 kB
          Lukas Zapletal
        3. writeBytes.patch
          4 kB
          Lukas Zapletal

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              lzap Lukas Zapletal
            • Votes:
              1 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: