Чтение с объектами сопоставления файлов в переполнении стека

Я пытаюсь использовать Memory Mapped File (MMF) для чтения моего файла данных .csv (очень большой и трудоемкий).

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

Могу ли я узнать, быстрее ли MMF, чем другие методы чтения?

Если это правда, может кто-нибудь показать мне простой пример, как читать файл с диска?

Спасибо заранее.

0

Решение

Могу ли я узнать, быстрее ли MMF, чем другие методы чтения?

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

Может кто-нибудь показать мне простой пример, как прочитать файл с диска?

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

Если вы хотите прочитать файл последовательно, вы можете использовать C ++ ifstream класс или функции времени выполнения C, такие как Еореп, Fread, а также fclose.

0

Другие решения

Если это быстрее или нет, зависит от множества различных факторов (например, к каким данным вы обращаетесь, как вы к ним обращаетесь и т. Д. Чтобы определить, что подходит для ВАШЕГО случая, вам нужно сравнить различные решения и посмотреть, что лучше в вашем случае. дело.

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

В традиционных типах чтения файлов (fstream :: read (), fredad () и т. Д.) Содержимое файла считывается во временный буфер в ОС, затем (часть) этот буфер копируется в предоставленный пользователем буфер. Это связано с тем, что ОС не может полагаться на наличие памяти, и она довольно быстро запутывается. Для файлов, отображаемых в память, ОС напрямую знает, где находится память для различных разделов (потому что задача ОС — выделить эту память и отследить, где она находится!) Файла, поэтому ОС может просто скопировать его прямо в файл.

Тем не менее, я сильно подозреваю, что метод чтения файла является второстепенной частью, и фактическая интерпретация / разбор / копирование файла может быть большой частью. [Предположение, мы не видели ваш код, конечно]. И, конечно, скорость ввода-вывода, доступная на самом диске, может играть большую роль, если файл очень большой.

0

По вопросам рекламы [email protected]