除了滚动我自己的集合之外,我想知道哪个现有 (.NET 3.5) 集合和 IDictionary 使用的内存量最少。
我目前正在使用
- List
,我只在其中添加项目,然后对其进行迭代。 - Dictionary
,我只在其中设置和获取键值对。
注意:我正在进行成熟的优化。
编辑:我事先不知道大小,但大约,字典将增长到大约 789679 个元素,列表平均将包含 10-20 个元素。
最佳答案
索引始终是空间和性能之间的权衡。列表和字典接口(interface)的内存占用最少的实现始终是平面数组。当然,这意味着您的字典性能将糟糕,并且插入性能(无论是哪一个)都会更糟!
对于 10-20 个元素的列表,坦率地说:甚至不用调查。只需使用 List<T>
。对于如此微不足道的数据量,没有任何明智的问题需要回答。
即使 789679 也不是很大。但是,如果您的重点是内存,那么简单地对数据进行预排序可能是您最好的选择。然后,您可以使用二分搜索来查找项目。速度不如哈希表实现,但内存少得多:只有 2 个数组(或单个元组数组)。或者换句话说:使用 SortedList<TKey,TValue>
关于c# - 内存占用最少的集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11536979/