Каковы недостатки (если они есть) использования файла с отображением памяти для чтения (файлы обычного размера) по сравнению с использованием комбинации CreateFile ReadFile?Сопоставление файлов с файлами против CreateFile/ReadFile
ответ
Вам понадобится более сложный код для установления сопоставления файлов, чем для открытия и чтения. Сопоставление файлов предназначено для произвольного доступа к разделу файла. Если вам это не нужно, просто не беспокойтесь о картировании файлов.
Также, если вам когда-либо понадобится переносить свой код на другую платформу, вы будете делать это намного проще и быстрее, если вы не используете сопоставление файлов.
С ReadFile/WriteFile у вас есть семантика детерминированной обработки ошибок. Когда вы используете файлы с отображением памяти, ошибки возвращаются путем выброса исключения.
Кроме того, если файл с отображением памяти попадает на диск (или, что еще хуже, сеть), чтение вашей памяти может занять несколько секунд (или даже минуты). В зависимости от вашего приложения это может вызвать неожиданные киоски.
Если вы используете ReadFile/WriteFile, вы можете использовать асинхронные варианты API, чтобы вы могли управлять этим поведением.
У вас также есть более детерминированная производительность, если вы используете ReadFile, особенно если ваш шаблон ввода/вывода предсказуем - сопоставление ввода/вывода с памятью часто бывает случайным, поскольку ReadFile почти всегда является последовательным (поскольку ReadFile читает в текущей позиции файла и продвигает текущую позицию файла).
Большим преимуществом сопоставления файлов является то, что он не влияет на системный кеш. Если ваше приложение делает чрезмерные операции ввода-вывода с помощью ReadFile, ваш системный кеш будет расти, потребляя все больше и больше физической памяти. Если ваша ОС 32 бит, и у вас гораздо больше 1 ГБ памяти, чем вам повезло, так как на 32-битной Windows размер системного кеша ограничен 1 ГБ. В противном случае системный кеш будет потреблять всю доступную физическую память, и диспетчер памяти скоро начнет очищать страницы других процессов на диск, усиливая дисковые операции, а не уменьшать их. Эффект особенно заметен в 64-битной Windows, где размер кэша ограничен только доступной физической памятью. С другой стороны, сопоставление файлов не приводит к переполнению системного кеша и в то же время не ухудшает производительность.
- 1. Rspec, сопоставление файлов спецификаций с рубиновыми файлами под тестированием
- 2. Сопоставление структуры БД с файлами сопоставления nHibernate
- 3. анонимное сопоставление или сопоставление файлов?
- 4. Сопоставление файлов с резервной копией (`* ~`)
- 5. Сопоставление шаблонов против Простое совпадение
- 6. Сопоставление источника с двоичными файлами в разработке Visual Studio
- 7. TFS Неверное сопоставление файлов
- 8. Поиск и сопоставление файлов
- 9. Текстовое сопоставление файлов
- 10. Hadoop: Сопоставление двоичных файлов
- 11. Как работает сопоставление файлов
- 12. Сопоставление типов файлов изображений с приложениями для iPhone
- 13. Сопоставление имен файлов в случае условия perl
- 14. Дизайн: Большой редактор архивных файлов, сопоставление файлов
- 15. NGINX - Сопоставление html-файлов с php
- 16. Сопоставление больших файлов с помощью MapViewOfFile
- 17. сопоставление конфигурационных файлов с жестким кодом
- 18. Сопоставление файлов cookie Asp.net пользователям
- 19. сопоставление столбцов из двух файлов
- 20. сопоставление разных файлов в unix
- 21. Сопоставление ряда файлов warc.gz, EMR
- 22. FileSystemWatcher Filter - обнаружение файлов с zip-файлами?
- 23. PHP-анализ файлов с несколькими файлами
- 24. intellij IDEA несколько файлов с файлами dex
- 25. Сравнение файлов с файлами PowerShell не найдено
- 26. Создание файлов с несколькими файлами через пакет
- 27. $ .ajax время загрузки файлов с большими файлами
- 28. Ошибка при перечислении файлов с файлами google
- 29. Слишком много файлов с файлами вызывает ошибку?
- 30. Сохранение больших файлов с файлами excel