В моем приложении я пытаюсь объединить отсортированные файлы (конечно, сохраняя их отсортированными), поэтому мне приходится перебирать каждый элемент в обоих файлах, чтобы записать минимальный в третий. Насколько я понимаю, это работает довольно медленно с большими файлами. Не вижу другого выбора (необходимо выполнить итерацию). Я пытаюсь оптимизировать загрузку файлов. Я могу использовать некоторый объем ОЗУ, который я могу использовать для буферизации. Я имею в виду, что вместо того, чтобы читать 4 байта из обоих файлов каждый раз, когда я могу прочитать что-то вроде 100 МБ и работать с этим буфером после этого, пока в буфере не будет элемента, тогда я снова заполню буфер. Но я предполагаю, что если Stream уже делает это, даст ли мне больше производительности и есть ли причина? Если fstream это сделает, может, я смогу изменить размер этого буфера?
добавлено
Мой текущий код выглядит так (псевдокод)
// this is done in loop
int i1 = input1.read_integer();
int i2 = input2.read_integer();
if (!input1.eof() && !input2.eof())
{
if (i1 < i2)
{
output.write(i1);
input2.seek_back(sizeof(int));
} else
input1.seek_back(sizeof(int));
output.write(i2);
}
} else {
if (input1.eof())
output.write(i2);
else if (input2.eof())
output.write(i1);
}
Что я не делаю? Например, здесь
Можете ли вы предложить улучшения для этого?
Спасибо.