BufferedOutputStream
Steve Ratcliffe
sterat at dial.pipex.com
Sat Sep 12 10:20:48 PDT 1998
The BufferedOutputStream implementation causes a mixture of large and
small writes of odd sizes to the underlying stream. This results in up
to twice as many system calls as necessary depending on the circumstances.
The following fix causes writes to the underlying stream to occur only
in buffer sized chunks (unless flushed). This gave me a small but
measurable increase in the writing speed.
..Steve
--- BufferedOutputStream.java.orig Sat Sep 12 13:15:05 1998
+++ BufferedOutputStream.java Sat Sep 12 18:15:52 1998
@@ -39,10 +39,15 @@
}
public synchronized void write(byte b[], int off, int len) throws IOException {
- if (count + len > buf.length) {
+ while (count + len > buf.length) {
+ int left = buf.length - count;
+
+ System.arraycopy(b, off, buf, count, left);
+ count += left;
writeBuffer();
- out.write(b, off, len);
- return;
+
+ off += left;
+ len -= left;
}
System.arraycopy(b, off, buf, count, len);
count += len;
More information about the kaffe
mailing list