Страницы

Поиск по вопросам

суббота, 13 октября 2018 г.

Подгрузка файла в память

Есть большой файл с двумерным массивом. Весь массив целиком загружать в память, я думаю, не стоит (ну очень большой массив). Периодически нужны кусочки данных из разных частей массива. Как это лучше организовать?
Есть вариант держать fstream все время открытым и выбирать данные используя seekg(). Будет ли в таком случае весь файл загружен в память?


Ответ

Файл нужно отобразить на оперативную память (mmap в unix, CreateFileMapping в Windows). Тогда при обращении к нему, ОС будет сама подтягивать с диска нужные куски (причем самым оптимальным образом). В том случае, если физической памяти будет недоставать, ОС выбросит эти страницы из нее (что не займет практически никакого времени), и не будет их долго и мучительно сливать в файл подкачки.

Комментариев нет:

Отправить комментарий