ifstream vs. fread для двоичных файлов

Что быстрее? 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 () в основном методе и передавать буфер в небольшие методы? Думаю, я собираюсь написать небольшую программу для тестирования.

Спасибо!

5
задан Snowfish 25 May 2011 в 22:06
поделиться