Я создаю приложение, которое хранит множество пользовательских данных в памяти, и в основном оно хранит все это в структурах List (и некотором словаре , когда мне нужен поиск).
И мне интересно ...
Насколько эффективны списки?
Сколько памяти я получу за каждого из них? (то есть пространство памяти в дополнение к тому, что занимают содержащиеся в них объекты)
Сколько штрафа я плачу каждый раз, когда я устанавливаю новый экземпляр?
Есть ли более эффективный способ?
Словари - это просто HashTables, верно? Или это менее эффективная структура данных?
Я бы хотел использовать массивы, но у меня есть типичная проблема добавления и удаления вещей из них все время, поэтому необходимость увеличивать / уменьшать их было бы болезненно.
Есть идеи / предложения?
Редактировать: я знаю свои базовые структуры данных 101, и почему Связанный список лучше добавлять / удалять, а HashTable лучше для произвольного доступа.
Меня больше всего волнует идиосинкразия .Net. Сколько памяти тратит каждая из этих структур, например. И время было потрачено на их инициализацию / убийство.
Такие вещи, как, например, если создание экземпляра / GC a List занимает много времени, но не так много, чтобы его очистить, может быть, мне следует оставить небольшой пул списков в ожидании меня, очистить их и отправить обратно когда закончите, вместо того, чтобы просто разыменовывать их.
Или, если Hashtables быстрее для доступа, но тратят много памяти, я мог бы предпочесть использовать списки и проходить по ним, для подсчета небольших предметов.
И я бы тоже хотел сосредоточиться на использовании памяти, так как мое приложение чрезмерно интенсивно использует память (думаю, что memcached вроде) ...
Кто-нибудь знает, где я могу найти такую информацию?