【发布时间】:2011-05-10 01:16:56
【问题描述】:
我只是在看MSDN documentation for 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<int, int> cd = new ConcurrentDictionary<int, int>(Environment.ProcessorCount * 2, initialCapacity);
for (int i = 0; i < NUMITEMS; i++) cd[i] = i * i;
在示例中,字典永远不会包含超过 64 个项目。为什么不将初始容量设置为 64,而不是设置为大于 64 的看似任意的素数?评论说这是为了确保字典在初始化时不需要调整大小,但是为什么需要调整 initialCapacity=64 的类似字典呢?为什么选择这个素数?
【问题讨论】:
标签: c# .net collections concurrency