c# - 我什么时候应该使用 sorteddictionary 而不是字典

标签 c# dictionary benchmarking sorteddictionary

<分区>

正如我在上一篇文章中所写的那样,我对 c# 世界仍然很陌生,所以我编写了一个小的基准来比较字典、哈希表、排序列表和排序字典。测试运行 8000 次迭代和 50 到 100000 个元素。我测试了添加新元素、搜索元素并随机循环遍历一些元素。结果与我预期的一样,除了 SortedDictionary 的结果,这让我很困惑……所有结果都很慢。我也错过了关于排序字典概念的一些事情。我已经问过谷歌,但我发现的只是其他人得出了相同的测试结果。根据他们对测试的实现略有不同。我的问题又来了:为什么 SortedDicrionary 比所有其他的都慢这么多?

最佳答案

SortedDictionary 实现为二叉搜索树。因此,访问一个元素是 O(lg(n))。字典是一个哈希表,访问复杂度为 O(1)。

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

关于c# - 我什么时候应该使用 sorteddictionary 而不是字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5772476/

相关文章:

c# - 将十六进制 unicode 字符转换为其可视化表示

arrays - 在 Swift 字典数组中查找和替换值

ElasticSearch:索引文档基准测试

c# - 使用 Vector<T> 的 SIMD 向量化 C# 代码运行速度比经典循环慢

c# - VS2017 - C#7 语言功能在 MVC View 中不起作用

c# - .NET 4 EF4 insertint Unique Identifier into SQL Server table 给出了重复项

python - 将字典的值更改为列表

php - Python空字典和PHP

java - 为什么两个 Java 线程(在某些情况下)比一个线程快两倍以上?

c# - 如何从某个进程获取打开的套接字列表?