Позиционирование ifstream в очень больших файлах - PullRequest
2 голосов
/ 02 сентября 2010

Мне нужно обработать очень большие файлы журналов (сотни гигабайт), и чтобы ускорить процесс, я хочу разделить эту обработку на все имеющиеся у меня ядра. Используя seekg и tellg, я могу оценить размеры блоков в относительно небольших файлах и расположить каждый поток в начале этих блоков, но когда они становятся большими, индексы переполняются.

Как разместить и индексировать очень большие файлы при использовании C ++ ifstreams и Linux?

С уважением.

Ответы [ 2 ]

2 голосов
/ 02 сентября 2010

Самый простой способ - выполнить обработку в 64-битной ОС и написать код с помощью 64-битного компилятора.Это (по крайней мере обычно) даст вам 64-битный тип для смещения файлов, так что переполнение больше не происходит, и жизнь хороша.

1 голос
/ 02 сентября 2010

У вас есть два варианта:

  1. Использовать 64-битную ОС.
  2. Использование специальных функций ОС .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...