2015-06-30 3 views
-4

Мне нужно реализовать интерфейс IList Существует 2 основных требования. 1) не сохранять элемент списка в памяти, а на диске. 2) Реализация должна быть общей для любого типа, однако рассмотрите оптимизацию для примитивных типов для сохранения дискового пространства.Выполнение IList

Как я предполагаю, что делать «2» « Во-первых, общий для всех типов Seconde, оптимизация для примитивных типов для экономии места на диске.

Tnx

+0

SO не превращает вашу идею в некоторые практические коды. Пожалуйста, покажите свои усилия, иначе ваш вопрос будет закрыт. – hina10531

ответ

1

Вы можете использовать PersistentDictionary, который является реализация структуры данных похожа на словарь в .NET.

Но он работает только со строками, и, читая исходный код, я не уверен, что он был разработан для очень больших datasets.

Более масштабируемый (до 16 ТБ), ESENT PersistentDictionary<>, использует механизм базы данных ESENT, присутствующий в Windows (XP +), и может хранить все объекты, пригодные для сериализации, содержащие простые типы.

И посмотрите на Disk Based Data Structures, который может дать вам хорошие идеи.

0

Вы можете добиться специальной оптимизации случая для «примитивных» типов, используя для этого другой метод сериализации. Например, если ваш тип элемента равен byte[], вы можете использовать файл IO api, который напрямую считывает и записывает массивы байтов без дальнейшей логики сериализации.

Смежные вопросы