Буферизированный ObjectInputStream существует?

Я десериализовываю объект из файла, который составляет 350 КБ в размере и его взятие скорее долгое время. Мой TA информатики сказал мне, что существует способ использовать Буферизированного читателя наряду с ObjectInputStream для большого увеличения производительности. Я однако ничего не могу найти об этом на Google.

10
задан Aymon Fournier 29 July 2010 в 17:16
поделиться

2 ответа

Вы используете украшательство для буферизации входного потока. Например, так

   InputStream in = ...; // your underlying stream (e.g. FileInputStream)
   ObjectInputStream oin = new ObjectInputStream(new BufferedInputStream(in));

Это гарантирует, что каждый вызов ObjectInputStream не вызывает базовый поток in, как, например, системный вызов ОС для чтения файлов. Вместо этого каждый вызов обращается к буферизованному входному потоку, который извлекает и кэширует блоки данных (по умолчанию 8K), и читает из них. Это быстрее, поскольку чтение из потока теперь является локальным вызовом метода в java, и накладные расходы на вызов метода, связанные с системным вызовом, встречаются реже. Когерентность кэша и оптимизация JIT также играют свою роль в повышении производительности.

19
ответ дан 3 December 2019 в 18:30
поделиться

Нет, но вы можете использовать ObjectInputStream (InputStream in) конструктор

Для создания потока ввода буферизованного объекта путем передачи BufferedInputStream в качестве аргумента вышеуказанному конструктору.

Вот пример чтения сериализованных объектов из файла:

InputStream file = null;
try {
   file = new FileInputStream("Out.test");
   InputStream buffer = new BufferedInputStream(file);
   ObjectInputStream in = new ObjectInputStream(buffer);
   vector = (Vector)in.readObject();
} catch (Exception e) {
   e.printStackTrace();
} finally{
   if(file != null ) {
       file.close();
   }
}

Оформить заказ по следующей ссылке:

http://java.sun.com/docs/books/performance/1st_edition/html/JPIOPerformance.fm.html

2
ответ дан 3 December 2019 в 18:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: