Как мне лучше всего прочитать архив с сериализацией? - PullRequest
1 голос
/ 07 сентября 2011

Полагаю, мой вопрос частично проистекает из этого вопроса: std :: ifstream буферное кеширование. У меня есть архив с расширенной сериализацией, и в настоящее время я читаю его с помощью оператора &, как предложеноПомогите.Насколько я понимаю, это переводится как << и >> для операций ввода и вывода.Теперь, судя по приведенному выше вопросу, эти операторы вместе с fstream не дают оптимальной производительности.

Мне нужно только прочитать несколько объектов по 100 тыс. И последовательно поработать с ними, а затем удалить их.Прямо сейчас я буквально делаю

  1. Прочитать один объект 2. Обработать его 3. Удалить его 4. Повторить.

Мне интересно, стоит ли изменить это значение на

  1. Считать все объекты в очередь 2. Обработать очередь 3. Удалить все

или я должен реализовать какой-нибудь буфер для файла и сначала прочитать двоичный файл в буфер?

Или, может быть, запустить второй поток и сделать так, чтобы второй поток прочитал файл с передачей некоторого потока?

И частично повторяя вышеупомянутый вопрос, но есть ли у кого-то больше опыта, пытаясь оптимизировать буфер fstream, или, может быть, даже рабочий пример?

Спасибо

1 Ответ

0 голосов
/ 23 ноября 2011

Менять это не имеет смысла.По умолчанию, он все равно проходит через буферизованный ридер, и этот ридер в любом случае считывает данные с жесткого диска в 4K-блоках.Чтение их по одному позволяет лучше использовать память.Единственное, что может иметь смысл - это поменять 4k на другое число.

...