Я, вероятно, не использовал бы отображенный в памяти файл для этого приложения.Файлы с отображением в памяти работают лучше всего, когда у вас большое виртуальное адресное пространство (по крайней мере, относительно размера данных, которые вы обрабатываете).Вы отображаете весь файл и позволяете ОС решать, какие части остаются резидентными.
Однако, если вы неоднократно отображаете и удаляете сопоставление сегментов файла (а не всего файла), вы, вероятно, в конечном итогеделать то же самое, читая порции через fseek
и fread
- однако заметьте, что вы не не хотите читать отдельные фрагменты данных таким образом (т.е. сделать одно большое чтение, а немного маленьких операций чтения).
Один из способов, с помощью которого сегментированные вручную отображенные в память файлы могут выиграть, - это если у вас есть редкие чтения: если вы только касаетесь, скажем, 10% от заданного файла.В этом случае отображение памяти означает, что ОС будет читать только те страницы, к которым обращаются, тогда как явное чтение загрузит весь файл.
О, и я бы определенно не потратил бы время на попыткиконтролировать мое потребление ресурсов.ОС сделает это лучше, чем вы, потому что она знает обо всех конкурирующих процессах.