Производительность сопоставленных файлов памяти .NET 4.0 - PullRequest
17 голосов
/ 25 февраля 2010

Хотелось бы узнать, пробовал ли кто-нибудь новые возможности .NET 4.0 Memory Mapped Files? Я знаю, что они такие же старые, как ОС, но нативная обработка в .NET является новой.

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

Спасибо!

Ответы [ 3 ]

4 голосов
/ 25 февраля 2010

Файлы с отображением в памяти в .NET 4.0 (в новом пространстве имен System.IO.MemoryMappedFiles) просто оборачивают Win32 API для файлов с отображением в памяти.

Это означает, что они настолько быстры, насколько это возможно. Это тот же механизм, который используется для загрузки сборок .NET в память.

С точки зрения фактических временных чисел, это будет зависеть от 32-битной и 64-битной систем, от того, сколько у вас памяти, сколько файлов, шаблонов доступа и в значительной степени от типа оборудования физического диска. *

Ссылка: Отображаемые в память файлы

1 голос
/ 25 марта 2014

В следующем вопросе я проверил производительность MemoryMapped Files по сравнению со стандартным IO:

Недостатки использования отображенных в память файлов

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

0 голосов
/ 08 июня 2016

В моих тестах производительность .NET 4.5 MMF составляла ~ 40% производительности собственных вызовов WinAPI, то есть более чем в два раза медленнее.

...