Ответ, как всегда, « Это зависит ». Я полагаю из тегов, которые вы говорите о C #.
Ваш лучший выбор - определить
- Набор данных
- Требования к использованию
и написать несколько тестов.
Это также зависит от того, как вы сортируете список (если он вообще сортируется), какого рода сравнения необходимо выполнить, сколько времени занимает операция «Сравнить» для определенного объекта в списке или даже как вы собираетесь использовать коллекция.
Как правило, лучший выбор не столько зависит от размера данных, с которыми вы работаете, сколько от того, как вы намереваетесь получить к нему доступ. У вас есть каждый фрагмент данных, связанный с определенной строкой или другими данными? Лучше всего подойдет коллекция на основе хешей. Важен ли порядок хранимых данных или вам потребуется доступ ко всем данным одновременно? Обычный список может быть лучше.
Дополнительно:
Конечно, мои комментарии выше предполагают, что «производительность» означает доступ к данным. Что еще нужно рассмотреть: что вы ищете, когда говорите «производительность»? Производительность индивидуальной ценности смотрит вверх? Это управление большими (10000, 100000 или более) наборами значений? Производительность заполнения структуры данных данными? Удаление данных? Доступ к отдельным битам данных? Замена значений? Перебирая значения? Использование памяти? Скорость копирования данных? Например, если вы обращаетесь к данным по строковому значению, но основным требованием к производительности является минимальное использование памяти, у вас могут возникнуть конфликтующие проблемы проектирования.