【发布时间】:2013-03-14 16:27:22
【问题描述】:
如果我想一次向Dictionary 添加大量项目并且我提前知道(粗略)数字,那么如果我使用适当的设置初始容量,它在内存和 cpu 方面会更快更高效构造函数重载。
在我测试的情况下,使用 300.000 个条目,如果我将 Dictionary 的容量设置为 300.000,它比未初始化时快约 25%。
现在,如果我有一个已经构建但已清空的字典,我需要填充大量项目,我该怎么办?假设这是例如readonly 变量,我无法使用新的 Dictionary 实例重新分配该变量。我在文档中看不到任何影响已经构建的 Dictionary 容量的东西。像例如Clear(int newInitialCapacity) 会很好。
我运气不好?
【问题讨论】:
-
使用this构造函数指定初始大小有什么问题?
-
@TimSchmelter 他已经构建了一个字典,我想他想重新使用它。
-
模拟
Clear(int capacity)的唯一方法是通过反射调用private void Initialize(int capacity)。 -
在我看来真的很奇怪,您使用的是只读字典,您无法影响哪个实例化。如果不是出于教育目的,您拥有的真实案例是什么?只是好奇。
-
@SergeyS
readonly有几个好处,例如使对象本身可用作 lockObj,不必检查 null 等。除此之外,假设您处于这种情况,如您可能正在使用无法更改的库或不想更改的代码。
标签: .net dictionary