【问题标题】:Use multiple dictionaries or a single huge one使用多个字典或单个大字典
【发布时间】:2014-10-31 08:07:03
【问题描述】:

我有一个关于 C# 中字典的一般性问题。 假设我读入一个文本文件,将其拆分为键和值并将它们存储在字典中。 将它们全部放入单个字典或将其拆分为更小的字典会更有用吗? 它可能不会对小文本文件产生巨大影响,但其中一些文件的行数超过 100.000 行。 你会推荐什么?

【问题讨论】:

  • 我同意 Eric 的观点……先简单易行,如果不符合您的目标,则根据需要进行优化/修复。也就是说,.NET 通用字典可以轻松处理 100,000 个元素,因此我预计在您所说的最坏情况下不会有任何问题。
  • 如果您使用的 .NET 框架小于 4.5 - 请注意任何单个对象的 2Gb 内存限制。 IE。在这种情况下,您的“巨大”字典不能超过 2 Gb。
  • 感谢您的回答:)

标签: c# performance dictionary


【解决方案1】:

第一条规则始终是在尝试优化之前进行基准测试。话虽如此,有些人可能已经为您进行了基准测试。检查那些results here

来自文章(以防万一从网上消失)

较小的字典(键数的一半)要快得多。 在这种情况下,两个字典在输入上的行为是 完全相同的。这意味着字典中有不需要的键 让它变慢。

我的观点是你应该使用单独的字典 不同的目的。如果您有两组密钥,请不要将它们存放在 同一个字典。如果可以将它们分开,则可以增强查找 性能。

来源:dotnetperls.com

同样来自文章:

完整词典:791 毫秒
半尺寸字典:591 ms [更快]

也许您可以使用更少的代码和多 200 毫秒的时间,这真的取决于您的应用程序

【讨论】:

  • 我可以确认这一点,在 1 部包含 260 万键的字典上,每次查找运行几乎一秒钟,将其拆分为 100 部左右的字典让我在半秒钟左右。
猜你喜欢
  • 2012-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-15
  • 2013-04-29
  • 1970-01-01
  • 2015-07-23
  • 2021-09-09
相关资源
最近更新 更多