Программирование на JAVA
Меню :
Стартовая
Основы программирования
Программирование на JAVA
Программирование на C++
Программирование на Pascal
Задачи по программированию
Сначала данные записываются во внутренний буфер. Непосредственное обращение к устройству вывода и, соответственно, запись в него, произойдет, когда буфер заполнится. Инициировать передачу содержимого буфера на устройство вывода можно и явным образом, вызвав метод flush(). Так же буфер освобождается перед закрытием потока. При этом будет закрыт и надстраиваемый поток (так же поступает BufferedlnputStream).
Следующий пример наглядно демонстрирует повышение скорости считывания данных из файла с использованием буфера:
try {
String fileName = "d:\\file1"; InputStream inStream = null; OutputStream outStream = null; //Записать в файл некоторое количество байт long timeStart = System.currentTimeMillis(); outStream = new FileOutputStream(fileName); outStream = new BufferedOutputStream(outStream); for(int ¡=1000000; -i>=0;) { outStream.write(i);
}
long time = System.currentTimeMillis() - timeStart; System.out.println("Writing time: " + time + " millisec"); outStream.close();
// Определить время считывания без буферизации
timeStart = System.currentTimeMillis();
inStream = new FilelnputStream(fileName);
while(inStream.read()!=-1){
}
time = System.currentTimeMillis() - timeStart; inStream.close();
System.out.println("Direct read time:" + (time) + " millisec");
// Теперь применим буферизацию
timeStart = System.currentTimeMillis();
inStream = new FilelnputStream(fileName);
inStream = new BufferedlnputStream(inStream);
while(inStream.read()!=-1){
}
time = System.currentTimeMillis() - timeStart; inStream.close();
System.out.printlnf'Buffered read time:" + (time) + " millisec"); } catch (lOException e) {
System.out.printlnf'IOException:" + e.toStringO); e. pri ntStackTrace();
}
Результатом могут быть, например, такие значения:
Writing time: 359 millisec Direct read time: 6546 millisec Buffered read time: 250 millisec
В данном случае не производилось никаких дополнительных вычислений, занимающих процессорное время, только запись и считывание из файла. При этом считывание с использованием буфера заняло в 10 (!) раз меньше времени, чем аналогичное без буферизации. Для более быстрого