Хотя я понимаю, что чтение больших файлов, превышение размера буфера (8 КБ) может свести на нет преимущества буферизации, я не понимаю, почему производительность от использования буфера все равно выше чем не использовать его (по крайней мере, для этого требуется меньше системных вызовов). Единственным недостатком, который я здесь вижу, является ненужное использование памяти самим буфером.
Вопрос: 1. За исключением сред с ограниченной памятью, где использование памяти является проблемой, почему бы и нет мы всегда используем буферизацию как для ввода, так и для вывода?
- Почему копировать файл быстрее, если вывод буферизован?
Код: Выделить всё
static void t2() {
System.out.println("Copy file using BufferedInputStream (8192), with BufferOut");
long startTime = System.nanoTime();
try (BufferedInputStream br = new BufferedInputStream(new FileInputStream("text.txt"));
var bOut = new BufferedOutputStream(new FileOutputStream("text_3.txt"))) {
int i;
while ((i = br.read()) != -1) {
bOut.write(i);
}
} catch (IOException e) {
System.out.println(e);
}
long endTime = System.nanoTime();
long duration = (endTime - startTime) / 1000000;
System.out.println("Duration: " + duration + " millisecond");
}
Подробнее здесь: https://stackoverflow.com/questions/784 ... nputstream