Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Чтение больших файлов


Автор: foxmalder 13.10.2012, 23:38
Добрые люди помогите пожалуйста советами)
задача такая: например, есть несколько файлов объемом 4-6 гб текстовых. их надо очистить от дубликатов слов и  отсортировать. подскажите как максимально использовать оперативную память для этого 

Автор: Dem_max 14.10.2012, 13:52
Читаешь блоками по XXX мегабайт, удаляешь из блоков памяти лишнее и пишешь обратно в новый файл.

Автор: math64 15.10.2012, 07:16
Читаешь блоками (рамеры блока не фиксированы, границы - по границам слов), каждый блок сортируешь, очищаешь от повторений, записываешь во временный файл. Затем сортировка слиянием (с одновременным удалением дубликатов), удаление временных файлов.

ЗЫ: если все слова (по одному) влезают в память - читаешь последовательно и формируешь отсортированный список слов.

Автор: Silent 15.10.2012, 08:34
http://ru.wikipedia.org/wiki/MapReduce тебе в помощь

Автор: Zhunko 31.10.2012, 01:45
Ещё, в качестве инструмента, mapping можно порекомендовать. Можно работать с файлом, как будто он весь в памяти.
Двигаешь окно проекции по файлу и читаешь, что надо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)