预测词典>>尺寸和速度

发布于 2024-12-06 06:11:08 字数 284 浏览 1 评论 0原文

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

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

我计划使用字典来存储超过 1000 万个条目,甚至可能更多。

已经考虑了字典的大小的问题

I need to accurately calculate the size of a Dictionary for different sizes. I've tried doing some memory monitoring while running my application, but I am doing a lot of other stuff at the same time that affects the result.

How can I calculate (aprox) expected size of a Dictionary with n items? I need to know how much RAM I need in different scenarious.
By what factor does lookup time increase? O(1) ALWAYS?

I'm planning to use dictionaries for 10M+ entries, probably more.

Already consideret question for Size of a dictionary

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦在深巷 2024-12-13 06:11:08

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

结果如下:

  • 在包含 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/

To answer my own question I created a small test program.

Here are the results:

  • 100 000 random lookups in a table consisting of 10 000 000 random entries takes 0,02 seconds, the table uses 200MB of RAM.

  • Memory used by a dictionary seems to be around 20-22 times for Int32 index once you get above 100 items. The ratio goes down as the dictionary gets larger.

  • Pre-allocating memory seems to cut down noticeable on insert time.

Results from Dictionary memory and speed test

Details of the test and results at http://blog.tedd.no/2011/09/26/net-dictionary-speed-and-memory/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文