【问题标题】:Predicting Dictionary<> size and speed预测字典<>的大小和速度
【发布时间】:2011-11-24 23:58:23
【问题描述】:

我需要准确计算不同大小的字典的大小。我尝试在运行我的应用程序时进行一些内存监控,但同时我正在做很多其他影响结果的事情。

如何计算(近似)包含 n 个项目的字典的预期大小?我需要知道在不同的场景中我需要多少 RAM。
查找时间增加的因素是什么? O(1) 总是?

我打算为超过 1000 万个条目使用字典,可能更多。

已经为Size of a dictionary考虑问题

【问题讨论】:

    标签: .net dictionary hashtable


    【解决方案1】:

    为了回答我自己的问题,我创建了一个小型测试程序。

    结果如下:

    • 在包含 10 000 000 个随机条目的表中进行 100 000 次随机查找需要 0.02 秒,该表使用 200MB 的 RAM。

    • 一旦您获得超过 100 个项目,字典使用的内存似乎是 Int32 索引的 20-22 倍左右。随着字典变大,比率会下降。

    • 预分配内存似乎显着减少了插入时间。

    http://blog.tedd.no/2011/09/26/net-dictionary-speed-and-memory/的测试和结果详情

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-21
      • 1970-01-01
      • 1970-01-01
      • 2018-03-24
      • 2014-12-17
      • 1970-01-01
      相关资源
      最近更新 更多