预测字典<>大小和速度

时间:2011-09-26 07:37:00

标签: .net dictionary hashtable

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

如何计算(aprox)具有n个项目的词典的预期大小?我需要知道在不同的情况下我需要多少RAM 查找时间增加的因素是什么? O(1)总是?

我打算将词典用于10M +条目,可能更多。

已经考虑Size of a dictionary

的问题了

1 个答案:

答案 0 :(得分:2)

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

结果如下:

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

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

  • 预先分配内存似乎在插入时间上明显减少。

Results from Dictionary memory and speed test

http://blog.tedd.no/2011/09/26/net-dictionary-speed-and-memory/

的测试和结果详情