Файлы с отображением в память полезны в сценариях, где требуется многократно обращаться к относительно небольшой части (представлению) значительно большего файла.
В этом сценарии операционная система может помочь оптимизировать общее использование памяти и поведение приложения при подкачке страниц, загружая и выгружая только самые недавно использованные части сопоставленного файла.
Кроме того, файлы с отображением в память могут раскрыть интересные функции, такие как копирование при записи, или служить основой совместно используемой памяти.
Для вашего сценария файлы с отображением в память могут помочь вам собрать файл, если блоки поступают не по порядку. Однако вам все равно нужно знать заранее конечный размер файла.
Кроме того, вы должны получить доступ к файлам только один раз для записи фрагмента. Таким образом,
Файлы с отображением памяти в основном используются для межпроцессного взаимодействия или повышения производительности ввода-вывода.
В вашем случае вы пытаетесь повысить производительность ввода-вывода?
Ненавижу указывать на очевидное, но Википедия дает хорошее изложение ситуации ... http://en.wikipedia.org/wiki/Memory-mapped_file
В частности ...
Подход с отображением памяти имеет свои издержки из-за незначительных ошибок страницы - когда блок данных загружается в кеш страницы , но еще не отображены в пространство виртуальной памяти процесса. В зависимости от обстоятельств, ввод-вывод файлов с отображением в память может быть существенно медленнее, чем стандартный файловый ввод-вывод.
Похоже, вы собираетесь преждевременно оптимизировать скорость. Почему бы не использовать обычный файловый подход, а затем при необходимости провести рефакторинг для MM-файлов?
Я бы сказал, что оба случая актуальны. Просто запишите отдельные фрагменты в нужное место в файле с отображением памяти в произвольном порядке по мере их поступления. Это, конечно, полезно только в том случае, если вы знаете, куда должен идти каждый фрагмент, как в загрузчике bittorrent. Если вам нужно выполнить дополнительный анализ, чтобы узнать, куда должен идти фрагмент, преимущество файла с отображением памяти может быть не таким большим.