C # Memory Mapped файл Читать - PullRequest
       0

C # Memory Mapped файл Читать

2 голосов
/ 25 октября 2010

Я пытаюсь прочитать несколько текстовых файлов (около 300 кб каждый).До сих пор я использовал Filestream, чтобы открыть файл и прочитать его.(TAB DELIMITED)Тем не менее, я слышал о файле сопоставления памяти в .net 4.0.Это сделает мое чтение быстрее?

Существует ли какой-либо пример кода, который выполняет чтение простого файла и сравнивает производительность?

Ответы [ 5 ]

6 голосов
/ 25 октября 2010

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

Если все вывыполняется чтение файлов, нет смысла отображать их в память.

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

2 голосов
/ 25 октября 2010

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

0 голосов
/ 22 октября 2011

Memory Mapped File не рекомендуется для чтения текстовых файлов.Чтобы прочитать текстовый файл вы делаете правильно с Filestream.MMP лучше всего читать двоичные данные.

0 голосов
/ 25 октября 2010

С вашим количеством данных MMF не дают никакого преимущества.Однако, в общем, если кто-то потрудится провести тесты, он обнаружит, что копирование больших (огромных) файлов с использованием MMF выполняется быстрее, чем последовательный вызов ReadFile / WriteFile.Это вызвано различными механизмами, используемыми в Windows для управления MMF и для файлового ввода-вывода.

0 голосов
/ 25 октября 2010

Обработка данных в памяти всегда быстрее, чем что-либо подобное с помощью дискового ввода-вывода.Если ваша обработка последовательная и легко помещается в память, вы можете использовать File.ReadLines () , чтобы построчно получать данные и обрабатывать их без лишних затрат памяти.Вот пример: Как открыть большой текстовый файл в C #

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...