Есть ли проверенный и верный способ очень быстрого доступа к определенным областям очень большого (> 1 ГБ) двоичного файла в .NET? - PullRequest
4 голосов
/ 29 июля 2010

Используя очень большой файл необработанных двоичных данных, я буду создавать большой двоичный файл (больше 1 ГБ, обычно больше 4 ГБ), который содержит данные датчиков от произвольного числа датчиков (от 1 до 64).Новый обработанный файл будет использоваться пользователем в графическом интерфейсе, где он будет перемещаться по файлу, просматривая различные периоды времени или другой индекс, который может быть определен.Важно, чтобы доступ был как можно более плавным, и я также хотел бы загружать столько, сколько необходимо (что видит пользователь плюс, возможно, немного буфера).

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

Должен ли я писать это с нуля?Или есть какие-нибудь вспомогательные библиотеки, которые могут использоваться?

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

1 Ответ

3 голосов
/ 30 июля 2010

Вы можете использовать Memory Mapped File. В .NET 4.0 теперь есть оболочки: http://msdn.microsoft.com/en-us/library/system.io.memorymappedfiles.memorymappedfile.aspx

Если вам нужно настроить таргетинг на более раннюю версию, вам придется самостоятельно вызывать методы API: http://msdn.microsoft.com/en-us/library/aa366537.aspx

...