Хотя я, безусловно, рекомендую вам перейти от неуниверсальных коллекций к универсальным по множеству веских причин, я искренне сомневаюсь, что эти коллекции могут стать причиной ваших проблем с производительностью.Бокс, как правило, является проблемой только тогда, когда вы достигаете микроскопического уровня, когда нужно выжать крошечные выгоды в высокопроизводительных ситуациях.Также хорошо избегать в целом по причинам GC, но, как правило, это незначительно и в этой области.
Другими словами: весьма сомнительно, что boxing вызовет проблему производительности, котораяВаши пользователи заметят.
Очевидно, я говорю в обобщениях.Не зная вашего конкретного сценария, я не могу с уверенностью сказать так много.
Редактировать : Обратите внимание, что, хотя я скептически отношусь к вашей проблеме, вы можете использовать неуниверсальные коллекции как таковые, я укажу, что * очень важно, какой тип коллекции вы используете для решения данной проблемы, особенно когда объем данныхв коллекции большая.Вот лишь несколько примеров:
- Если вы выполняете поиск на основе ключа, хеш-таблица, такая как
Dictionary<TKey, TValue>
, будет значительно опережать, например, List<T>
. - Если вы проверяете наличие дубликатов,
HashSet<T>
будет иметь превосходную производительность. - Если вы ищете поведение FIFO (как в очереди), a
Queue<T>
будет иметь превосходную производительность. - Если вы выполняете вставку / удаление в произвольных позициях в коллекции,
LinkedList<T>
будет иметь превосходную производительность.
Эти коллекции должны быть частьюлюбого набора инструментов разработчика .NET (на самом деле, любого разработчика).Если вы обнаружите, что везде используете коллекции элементов List<T>
(или ArrayList
) или аналогичную структуру данных, это очень хорошо может вызвать проблемы с производительностью в будущем - опять же, особенно когда вашКоллекции большие.Это не тривиальное повышение производительности, о котором я говорю.Поэтому позаботьтесь о том, чтобы сделать разумный выбор для вашей коллекции типов .
Но я бы рекомендовал общий профилировщик производительности, например ANTS (хорошо, но не бесплатно) или EQATEC (также хорошо и бесплатно).Просто запустите ваше приложение под одной из таких программ и посмотрите, где ваши узкие места.Я предполагаю, что вы найдете это не с вашими неуниверсальными коллекциями;но, естественно, я могу ошибаться.