Что быстрее? ifstream
или fread
.
Что следует использовать для чтения двоичных файлов?
fread()
помещает в память весь файл.
Таким образом, после fread
доступ к созданному буферу происходит быстро.
Помещает ли ifstream::open()
весь файл в память?
или он обращается к жесткому диску каждый раз, когда мы запускаем ifstream::read()
?
Итак... ifstream::open()
== fread()
?
или (ifstream::open(); ifstream::read(file_length);
) == fread()
?
Или мне использовать ifstream::rdbuf()->read()
?
Изменить: Мой метод 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() в основном методе и передавать буфер в маленькие методы? Думаю, я собираюсь написать небольшую программу для тестирования.
Спасибо!