Некоторые типы коллекций в .Net имеют необязательный параметр конструктора "Начальная емкость". Например:
Dictionary<string, string> something = new Dictionary<string,string>(20);
List<string> anything = new List<string>(50);
Кажется, я не могу найти, какая начальная емкость по умолчанию для этих объектов в MSDN.
Если я знаю, что я буду хранить только 12 предметов в словаре, не имеет смысла установить начальную емкость примерно на 20?
Мое рассуждение заключается в том, что емкость растет так же, как и для StringBuilder, которая удваивается каждый раз, когда нажимается мощность, и каждое перераспределение является дорогостоящим, почему бы не предустановить размер того, что, как вы знаете, будет содержать ваши данные, с какой-то дополнительной комнатой на всякий случай? Если начальная емкость равна 100, и я знаю, что мне понадобится всего около дюжины или около того, кажется, что остальная часть этой памяти распределена ни за что.