Когда использовать отображенные в память файлы?

43
задан skaffman 7 December 2009 в 10:58
поделиться

3 ответа

Файлы с отображением в память полезны в сценариях, где требуется многократно обращаться к относительно небольшой части (представлению) значительно большего файла.

В этом сценарии операционная система может помочь оптимизировать общее использование памяти и поведение приложения при подкачке страниц, загружая и выгружая только самые недавно использованные части сопоставленного файла.

Кроме того, файлы с отображением в память могут раскрыть интересные функции, такие как копирование при записи, или служить основой совместно используемой памяти.

Для вашего сценария файлы с отображением в память могут помочь вам собрать файл, если блоки поступают не по порядку. Однако вам все равно нужно знать заранее конечный размер файла.

Кроме того, вы должны получить доступ к файлам только один раз для записи фрагмента. Таким образом,

27
ответ дан 26 November 2019 в 23:08
поделиться

Файлы с отображением памяти в основном используются для межпроцессного взаимодействия или повышения производительности ввода-вывода.

В вашем случае вы пытаетесь повысить производительность ввода-вывода?

Ненавижу указывать на очевидное, но Википедия дает хорошее изложение ситуации ... http://en.wikipedia.org/wiki/Memory-mapped_file

В частности ...

Подход с отображением памяти имеет свои издержки из-за незначительных ошибок страницы - когда блок данных загружается в кеш страницы , но еще не отображены в пространство виртуальной памяти процесса. В зависимости от обстоятельств, ввод-вывод файлов с отображением в память может быть существенно медленнее, чем стандартный файловый ввод-вывод.

Похоже, вы собираетесь преждевременно оптимизировать скорость. Почему бы не использовать обычный файловый подход, а затем при необходимости провести рефакторинг для MM-файлов?

12
ответ дан 26 November 2019 в 23:08
поделиться

Я бы сказал, что оба случая актуальны. Просто запишите отдельные фрагменты в нужное место в файле с отображением памяти в произвольном порядке по мере их поступления. Это, конечно, полезно только в том случае, если вы знаете, куда должен идти каждый фрагмент, как в загрузчике bittorrent. Если вам нужно выполнить дополнительный анализ, чтобы узнать, куда должен идти фрагмент, преимущество файла с отображением памяти может быть не таким большим.

3
ответ дан 26 November 2019 в 23:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: