Эта проблема решается весной 3.0.4.RELEASE, где вы можете использовать конфигурационный элемент
в конфигурационном файле весеннего диспетчера.
Проверить Документация по весне
Списки являются массивами внизу, таким образом, хит производительности добавления объекта, если это не в конце, будет очень дорогостоящим.
Иначе они будут в основном с такой скоростью, как массив.
Возможно, необходимо рассмотреть использование некоторого типа базы данных в оперативной памяти, если у Вас есть так много данных, которые должны быть сохранены в памяти,
Список использует массив внутренне, и Словарь использует хеш-таблицу.
Они быстрее затем более старые неуниверсальные классы ArrayList и HashTable, потому что у Вас нет стоимости преобразования всего для возражения (упаковка, распаковывая и проверка типа) и потому что MS оптимизировал их лучше затем старые классы.
Объект LinkedList занял бы меньше времени, чтобы добавить к и удалить из из-за природы связанных списков. То, когда Вы добавляете элемент, он не должен изменять размер массива как нормальный список, делает. Кроме того улучшения я подозревал бы, что LinkedList будет работать о том же как нормальный Список.
Посмотрите это на Википедию: Связанные списки по сравнению с Массивами
Если Вам нужна эффективность во вставке, или удаление наугад помещает в списке существует структура данных LinkedList - Статья MSDN сообщает подробности. Очевидно, быть произвольным доступом связанного списка не эффективно.
Если Вы действительно хотите видеть все окровавленные детали того, как Список <> и Словарь <> реализованы, используйте замечательно полезный Отражатель.NET.
См. также документацию для превосходной Библиотеки Универсального набора C5, которая имеет очень хорошие реализации многих типов набора, отсутствующих в BCL.
Если Вы обеспокоены использованием памяти, реальный ключ должен сохранить Ваш массив на диске и отобразить просто части, в которых Вы нуждаетесь в память в то время.
Ключ должен использовать FILE_FLAG_NO_BUFFERING и всегда чтение-запись точно ценность одного сектора данных.
Я думаю, что вещью с двумя процессами могло бы быть излишество; плюс межпроцессное взаимодействие будет, вероятно, иметь некоторое замедление (хотя я никогда не пробовал такую вещь как взятие мое мнение о нем как мелкая частица соли). Я работаю над управляемым данными приложением, где каждый блок данных является крошечным, но мы можем иметь вверх миллиарда блоков данных в любой момент времени. Метод, который мы используем, в основном:
Другими словами, это - доморощенная схема кэширования. Преимущество - Вы, может управлять со сверхвысокой точностью, какие данные находятся в памяти, которая Вы не можете при доверии схеме подкачки страниц ОС. Если некоторая наиболее часто используемая переменная закончится смешанная в с Вашими данными на странице, то та страница будет неоднократно поражаться и препятствовать тому, чтобы он шел в диск. При разработке в приложение размещения, что некоторые запросы данных займут больше времени, чем другие, то это будет работать вполне прилично. Особенно, если Вы будете знать то, что разделяет Вас на блоки, то будет нуждаться заранее (мы не делаем).
Следует иметь в виду, что все в приложении.NET должно соответствовать в 2 ГБ памяти, и из-за способа, которым GC работает и издержки Вас приложение, у Вас на самом деле, вероятно, есть несколько меньше, чем это для работы с.
Для шпионажа за точно, на что похожа "куча" и кто выделяет используйте профилировщика CLR: http://www.microsoft.com/downloads/details.aspx?familyid=86ce6052-d7f4-4aeb-9b7a-94635beebdda&displaylang=en
.Net List не использует связанный список. Это - массив, это запускается с 4 положений по умолчанию, и я думаю, что это удваивается в размере, поскольку Вы добавляете вещи. Таким образом, производительность может варьироваться немного в зависимости от того, как Вы используете ее.
Если Ваше использование VS, 2008 выполняет профилировщика, прежде чем Вы станете слишком далекими вниз эта дыра крысы. Когда мы начали на самом деле смотреть на то, где мы теряли время, у использования не заняло много времени выяснять, что дебатирование тонкостей связанных списков просто действительно не имело значения.
Я бы и пальцем не пошевелил, пока не возникнет проблема с производительностью, и профайлер не покажет, что она есть. Тогда вам нужно будет решить серьезную проблему, и это будет намного проще.