[PATCH] BufferedIndexOutput - optimized writeBytes() method
-----------------------------------------------------------

         Key: LUCENE-435
         URL: http://issues.apache.org/jira/browse/LUCENE-435
     Project: Lucene - Java
        Type: Improvement
  Components: Store  
    Reporter: Lukas Zapletal
    Priority: Minor


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.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to