.Net 中的某些集合类型具有可选的“初始容量”构造函数参数。例如:
Dictionary<string, string> something = new Dictionary<string,string>(20);
List<string> anything = new List<string>(50);
我似乎无法在 MSDN 上找到这些对象的默认初始容量。
如果我知道我只会在字典中存储 12 个左右的项目,那么将初始容量设置为 20 是否有意义?
我的理由是,假设容量像 StringBuilder 一样增长,每次容量都会增加一倍,并且每次重新分配都是昂贵的,为什么不将大小预先设置为您知道可以保存数据的大小,并增加一些额外的房间以防万一?如果初始容量是 100,并且我知道我只需要十几个左右,那么似乎该内存的其余部分是白分配的。