在 FileOutputStream 和 BufferedOutputStream 上测试 write(byte[])
Testing write(byte[]) on FileOutputStream vs. BufferedOutputStream
使用 FileOutputStream
和 BufferedOutputStream
的 write(byte[])
方法时是否存在实际性能差异?
我在硬盘上测试了写入 500 MB 的文件,结果分别是 13 秒和 12 秒:
try(FileOutputStream out = new FileOutputStream(filePath1)) {
out.write(readBytes);
}
并且
try(BufferedOutputStream out = new BufferedOutputStream(
new FileOutputStream(filePath2))) {
out.write(readBytes);
}
关于 BufferedOutputStream
效率我错过了什么?
如果您一次写入一点数据,BufferedOutputStream
会更有效率:它会分批写入,直到它有 "enough" 个数据。
如果您一次写入所有内容,则不会有任何区别,因为总是有足够的数据来填充缓冲区;或者您已到达数据末尾,需要关闭流。
使用 FileOutputStream
和 BufferedOutputStream
的 write(byte[])
方法时是否存在实际性能差异?
我在硬盘上测试了写入 500 MB 的文件,结果分别是 13 秒和 12 秒:
try(FileOutputStream out = new FileOutputStream(filePath1)) {
out.write(readBytes);
}
并且
try(BufferedOutputStream out = new BufferedOutputStream(
new FileOutputStream(filePath2))) {
out.write(readBytes);
}
关于 BufferedOutputStream
效率我错过了什么?
BufferedOutputStream
会更有效率:它会分批写入,直到它有 "enough" 个数据。
如果您一次写入所有内容,则不会有任何区别,因为总是有足够的数据来填充缓冲区;或者您已到达数据末尾,需要关闭流。