【问题标题】:Which Dictionary key save space String or Int32哪个字典键节省空间 String 或 Int32
【发布时间】:2019-09-04 20:01:43
【问题描述】:

我有大量数据集,我需要Dictionary 关键条目。键是 7 个数字,所以 int16 不适合。

我正在考虑节省空间,因为int32 可以使用 32 位。

Dictionary<int32,.....>

那如果我用string,这样会节省空间吗? 因为我的string 总是长度为 7。

Dictionary<string,....>

【问题讨论】:

  • 您建议的 7 位字符串中的每个字符都将存储为至少 1 个字节(8 位),因此您不会在二进制级别使用字符串节省空间。在这种情况下,Int32 会更有效。
  • 是的,没错!!一个字符甚至可能是 2 个字节。

标签: c# dictionary hash hashmap


【解决方案1】:

System.Int32int 可以存储最多 9 位的所有数字加上一些 10 位的数字,为此需要 4 个字节。 System.Stringstring 每个字符需要 2 个字节加上末尾的 0 字符需要 2 个字节,存储长度的开销(4 个字节)+ 与对象相关的东西的开销,加上字典本身需要存储一个对字符串的引用,在 64 位系统上,该字符串有 8 个字节。与int 相比,该字符串需要更多存储空间且处理速度较慢。

见:How much memory does a C# string take up?

使用一个

Dictionary<int, TValue>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    相关资源
    最近更新 更多