Что быстрее?ifstream
или fread
.
Что я должен использовать для чтения двоичных файлов?
fread()
помещает весь файл в память.
Таким образом, после fread
доступ к создаваемому буферу происходит быстро.
Делает ifstream::open()
, помещает весь файл впамять?
или он обращается к жесткому диску каждый раз, когда мы запускаем ifstream::read()
?
Итак ... делает ifstream::open()
== fread()
?
или (ifstream::open(); ifstream::read(file_length);
) == fread()
?
Или я должен использовать ifstream::rdbuf()->read()
?
edit: Мой метод readFile () теперь выглядит примерно так:
void readFile()
{
std::ifstream fin;
fin.open("largefile.dat", ifstream::binary | ifstream::in);
// in each of these small read methods, there are at least 1 fin.read()
// call inside.
readHeaderInfo(fin);
readPreference(fin);
readMainContent(fin);
readVolumeData(fin);
readTextureData(fin);
fin.close();
}
Замедлит ли программа несколько вызовов fin.read () в маленьких методах?Должен ли я использовать только 1 fin.read () в методе main и передать буфер в маленькие методы?Я предполагаю, что напишу небольшую программу для тестирования.
Спасибо!