По моему опыту, переломный момент составляет от 10 до 50 пунктов, в зависимости от схемы использования и сложности вашей хэш-функции. Но вы должны сделать бенчмарк для ваших данных, особенно если ваша пользовательская хеш-функция может занять некоторое время для вычисления кэша.
Вы также можете использовать HybridDictionary
, который является внутренним списком для небольшого количества записей и хэш-таблицей после этого. .Net framework source показывает точку переключения на 9 элементов.
public class HybridDictionary: IDictionary {
// These numbers have been carefully tested to be optimal. Please don't change them
// without doing thorough performance testing.
private const int CutoverPoint = 9;
private const int InitialHashtableSize = 13;
private const int FixedSizeCutoverPoint = 6;
Обновление : как отметил @Hans Passant в комментарии выше, гибридный словарь не имеет универсальной версии, которая может повлиять на производительность при упаковке / распаковке и общем использовании. Итак, вы должны быть осторожны и делать тесты для вашей ситуации. Моя цель состояла в том, чтобы показать, что что-то около ~ 10 пунктов может быть точкой, чтобы начать использовать словарь против списка.