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

[PATCH] BufferedIndexOutput - optimized writeBytes() method

Details

    • Improvement
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • None
    • None
    • core/store
    • 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

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

            Dates

              Created:
              Updated:
              Resolved: