Словарь - это своего рода хеш-таблица; Я никогда не использую оригинальный Hashtable, так как он содержит только «объекты». Не беспокойтесь о том, что при увеличении емкости вставка равна O (N); Словарь всегда удваивает емкость, когда хеш-таблица заполнена, поэтому сложность средняя (амортизированная) равна O (1).
Вы почти никогда не должны использовать SortedList (который в основном является массивом), поскольку сложность составляет O (N) для каждой вставки или удаления (при условии, что данные еще не отсортированы. Если данные отсортированы, то вы получите O (1) , но если данные уже отсортированы, вам все равно не нужно использовать SortedList, потому что достаточно обычного List.) Вместо SortedList используйте SortedDictionary , который предлагает O (N log N) для вставки, удалить и искать. Однако SortedDictionary медленнее, чем Dictionary, поэтому используйте его, только если ваши данные должны быть отсортированы.
Вы говорите, что хотите кэшировать 10 000 пар ключ-значение. Если вы хотите выполнить все вставки до выполнения каких-либо запросов, эффективный метод - создать несортированный список, затем Сортировать его и использовать BinarySearch для запросов. Этот подход экономит много памяти по сравнению с использованием SortedDictionary и создает меньше работы для сборщика мусора.