Lucene - Core
  1. Lucene - Core
  2. LUCENE-435

[PATCH] BufferedIndexOutput - optimized writeBytes() method

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Minor 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.

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

        Activity

        No work has yet been logged on this issue.

          People

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

            Dates

            • Created:
              Updated:
              Resolved:

              Development