. NET ConcurrentDictionary начальная емкость установлена ​​на произвольное простое число, а не на ожидаемую емкость в документации примеров MSDN. Почему?

Я только что просматривал документацию MSDN для ConcurrentDictionary , и я видел это в "примере" кода:

// We know how many items we want to insert into the ConcurrentDictionary.
// So set the initial capacity to some prime number above that, to ensure that
// the ConcurrentDictionary does not need to be resized while initializing it.
int NUMITEMS = 64;
int initialCapacity = 101;

Для справки, словарь в MSDN Пример инициализируется следующим образом:

ConcurrentDictionary cd = new ConcurrentDictionary(Environment.ProcessorCount * 2, initialCapacity);
for (int i = 0; i < NUMITEMS; i++) cd[i] = i * i;

В этом примере словарь никогда не будет содержать более 64 элементов. Почему бы не установить начальную емкость 64, а не кажущееся произвольным простое число больше 64? В комментарии говорится, что это сделано для того, чтобы не изменять размер словаря при его инициализации, но зачем изменять размер аналогичного словаря с initialCapacity = 64? Почему было выбрано это простое число?

11
задан Matthew King 15 November 2010 в 05:00
поделиться