считываем большой файл. как манипулировать размером буфера?
От: ra88  
Дата: 08.07.09 15:34
Оценка:
Здраствуйте!

У меня проблема след. плана. Есть большой файл (несколько сотен мегов), состоящий из коротких строк. Почти все строки состоят из троек целых чисел. Надо считать все эту информацию и поместить в некоторую структуру данных. Загвоздка именно в быстром чтении.

Так как я не бум-бум в С++ (программирую без плюсов), а надо написать это именно в С++, то столкнулся с рядом проблем.

Для чтения используется ifstream

В данный момент, всё работает наивно и медленно:

...
ifstream is;
is.open(filename, fstream::in);
...
while (!is.eof()) {
    is >> a1;
    is >> a2;
    is >> a3;
    do_something(a1, a2, a3);
}
...


правильно ли я понял, что is открывает буфер для чтения типа filebuf, который переодически считывает кусок информации из файла во внутренний буфер, из которого информация подаётся в a1, a2, a3?

если это бред, то что на самом деле происходит?

если это так, то хочется не (сильно) меняя интерфейса, ускорить процесс чтения.

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

в страуструпе достаточно мало говорится про буферизацию. Где можно почитать больше?

надеюсь, более или понятно, чего я хочу.
while true;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.