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