1
從FileOutputStream
和BufferedOutputStream
使用write(byte[])
方法時是否存在實際性能差異?在FileOutputStream上測試寫入(byte [])與BufferedOutputStream
我測試了硬盤上寫入500MB的文件,結果爲13 12秒:
try(FileOutputStream out = new FileOutputStream(filePath1)) {
out.write(readBytes);
}
,並
try(BufferedOutputStream out = new BufferedOutputStream(
new FileOutputStream(filePath2))) {
out.write(readBytes);
}
我缺少的是約BufferedOutputStream
效率?
因此,它只會逐字節地寫入數據(即寫入(int b))會有所不同嗎? – user963241
不一定是一個一個;它只是小於緩衝區大小(默認爲8192)。 –
作爲附錄,如果要寫入的數組(片段)與緩衝區大小相同或大小相同,則「BufferedOutputStream」將消失,並直接將數組傳遞到目標流。因此,最糟糕的情況是反覆寫入略小於緩衝區大小的塊,這不會顯着減少目標寫入操作的數量,但會增加複製開銷。在這種情況下,'BufferedOutputStream' *會降低性能。 – Holger