Хранение значительного количества сложных объектов в памяти - PullRequest
0 голосов
/ 18 мая 2011

Я хочу, чтобы в памяти постоянно находилось около 20 000 сложных объектов (приложение будет работать в неопределенном цикле).Я рассматриваю возможность использования либо List<MyObject>, а затем преобразовать список в Dictionary<int, MyObject>, либо просто полностью исключить List и сохранить объекты в словаре.Мне было интересно, стоит ли преобразовывать список в словарь каждый раз, когда мне нужно найти объект?Что было бы лучше?Всегда ли они хранятся как словарь?Или есть список и использовать лямбды, чтобы получить нужный объект?Или я должен посмотреть на другие варианты?

Обратите внимание, мне не нужно поведение очереди или стека, когда извлечение объекта вызывает снятие очереди.

Ответы [ 2 ]

2 голосов
/ 18 мая 2011

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

Если вам нужен доступ к Dictionary, тогда у вас есть возможность использовать значение ключа для немедленного извлечения того, что вы ищете, или, если необходимо, вы все равно можете циклически проходить по Dictionary '* Values.

Просто используйте Dictionary.

2 голосов
/ 18 мая 2011

Использование лямбда-поиска в списке - O (N), что для 20 000 элементов не является незначительным.Однако, если вы знаете, что вам всегда нужно извлекать объект по известному ключу, вы можете использовать словарь O (1) - это так же быстро, как и алгоритмы.Поэтому, если есть какой-то способ, которым вы можете структурировать свои данные / приложение так, чтобы вы могли основывать поиск на каком-то предсказуемом, повторяемом, уникальном ключе, который увеличит производительность.Худшее (с точки зрения производительности) - это некоторая сложная процедура поиска по списку, но иногда это неизбежно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...