que solo estaba buscando en el MSDN documentation for ConcurrentDictionary, y vi esto en el "ejemplo" código:.NET ConcurrentDictionary capacidad inicial configurada en número primo arbitrario en lugar de la capacidad esperada en la documentación de ejemplo de MSDN. ¿Por qué?
// 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;
Como referencia, el diccionario en el ejemplo de MSDN se inicia de la siguiente manera:
ConcurrentDictionary<int, int> cd = new ConcurrentDictionary<int, int>(Environment.ProcessorCount * 2, initialCapacity);
for (int i = 0; i < NUMITEMS; i++) cd[i] = i * i;
En el ejemplo, el diccionario nunca contendrá más de 64 elementos. ¿Por qué no establecer la capacidad inicial en 64, en lugar de un número primo aparentemente arbitrario mayor que 64? El comentario dice que esto es para asegurar que el diccionario no necesita ser redimensionado al inicializarlo, pero ¿por qué un diccionario similar con initialCapacity = 64 necesita ser redimensionado? ¿Por qué se eligió este número primo?