user963241
user963241

Reputation: 7048

Testing write(byte[]) on FileOutputStream vs. BufferedOutputStream

Is there an actual performance difference when using write(byte[]) methods from FileOutputStream and BufferedOutputStream?

I tested both on HDD to write 500 MB file and the result was 13 and 12 seconds:

try(FileOutputStream out = new FileOutputStream(filePath1)) {
            out.write(readBytes);
}

and,

try(BufferedOutputStream out = new BufferedOutputStream( 
                           new FileOutputStream(filePath2))) {
            out.write(readBytes);
}

What am I missing about BufferedOutputStream efficiency?

Upvotes: 1

Views: 560

Answers (1)

Andy Turner
Andy Turner

Reputation: 140454

BufferedOutputStream is more efficient if you're writing data a little bit at a time: it batches the writes until it has "enough" data.

If you're writing it all at once, there's going to be no difference, because there's always enough data to fill the buffer; or you've reached the end of the data and need to close the stream.

Upvotes: 2

Related Questions