c# - 内存占用最少的集合?

标签 c# .net optimization collections memory-optimization

除了滚动我自己的集合之外,我想知道哪个现有 (.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/

相关文章:

python - Tensorflow "know"何时不将数据放入 GPU?

c# - 未能为字段分配正确的值?

c# - c# System.Drawing 中的 Alpha 掩蔽?

递归函数的代码优化

c# - 对于具有 +128 位 key 的布隆过滤器,我应该使用什么哈希函数?

c# - ASP NET Core 返回文件使用 IE11 失败?内容长度不匹配

c - 是否可以针对特定代码段禁用 gcc/g++ 优化?

C# 项目与 Oracle.DataAccess.dll (v2) 在 Win 7 与 ORA-12154 错误

javascript - 在 Web 应用程序 MVC 的后台操作中执行 javascript 代码

c# - 结构体包装值类型并通过索引提供访问权限