Если у меня есть, скажем, 100 элементов, которые будут храниться в словаре, следует ли его инициализировать таким образом?
var myDictionary = new Dictionary<Key, Value>(100);
Я понимаю, что словарь .NET внутренне изменяет размеры, когда достигает определенной загрузки, и что порог загрузки определяется как отношение емкости.
Это предполагает, что если к указанному выше словарю было добавлено 100 элементов, то при добавлении одного из элементов он изменил бы размер. Изменение размера словаря - это то, чего я бы хотел избежать, поскольку он имеет производительность и расточительно память.
Вероятность хеширования коллизий пропорциональна загрузке в словаре. Поэтому, даже если словарь не изменяет размер (и использует все его слоты), тогда производительность должна ухудшаться из-за этих столкновений.
Как лучше всего решить, какую способность инициализировать словарь, если вы знаете, сколько элементов будет внутри словаря?