什么时候应该使用sorteddictionary而不是字典

sra*_*sra 18 c# benchmarking dictionary sorteddictionary

正如我在上一篇文章中写的那样,我对c#世界还是一个新手,所以我写了一个小基准来比较Dictionary,Hashtable,SortedList和SortedDictionary.该测试运行8000次迭代,从50到100000个元素.我测试了添加新元素,搜索元素并循环遍历一些元素.结果就像我预期的那样,除了SortedDictionary的结果,这让我感到很困惑......所有结果都很慢.所以我错过了关于排序字典概念的一些内容.我已经问了谷歌,但我发现的所有其他人都得到了相同的测试结果.根据他们的测试实施略有不同.我的问题再次出现:为什么SortedDicrionary比其他所有人慢得多?

Eti*_*tel 24

SortedDictionary实现为二叉搜索树.因此,访问元素是O(lg(n)).Dictionary是一个哈希表,其复杂度为O(1),用于访问.

当您需要对数据进行排序(Dictionary没有已定义的顺序)时,SortedDictionary非常有用.字典适用于大多数情况.

  • 直接回答这个问题,“为什么 SortedDictionary 比所有其他字典慢得多”:这是 CPU 使用和 RAM 使用之间的权衡。Dictionary 比 SortedDictionary 更快,因为它是作为哈希表实现的,该算法旨在使用多余的内存以尽可能少地使用操作。SortedDictionary 是一种二叉搜索树,一种旨在使用尽可能多的操作以使用尽可能少的 RAM 的算法。 (5认同)

Guf*_*ffa 5

答案很简单,SortedDictionary如果需要排序的字典,则可以使用。

请记住,尽管它在您的测试中以最慢的速度结束,但仍不算慢。如果您SortedDictionary确实需要做什么,那是最好的解决方案。使用a Dictionary或a 执行相同操作SortedList会非常慢。

  • 这个答案基本上回答了这个问题:“我什么时候需要 SortedDictionary?” 说:“当你需要的时候!” 这根本没有帮助。至少给出一个使用“SortedDictionary”的例子是个好主意。 (4认同)