Dictionary 哪个更快:a“;“根树”;或一个;“b-树”;

Dictionary 哪个更快:a“;“根树”;或一个;“b-树”;,dictionary,hash,binary-tree,radix-sort,Dictionary,Hash,Binary Tree,Radix Sort,对于处理语言,如在常规字典单词中,哪一种读取速度更快,基数树还是常规b树?是否有一种更快的方法,例如带有bucket和哈希的字典?一如既往,您需要在应用程序上下文中进行基准测试以确保 然而,我希望在这种情况下,一个实现良好的哈希表可能会被证明是最快的。这基本上需要: 一次扫描字符串以计算哈希值,通常使用非常快速的操作,如位移位/XOR 一个基于哈希值的哈希表查找 一个字符串比较,以确认您有正确的单词 在发生哈希冲突的情况下进行一点额外的处理-但是,您可以调整哈希表大小以将此最小化 基数树也会

对于处理语言,如在常规字典单词中,哪一种读取速度更快,基数树还是常规b树?是否有一种更快的方法,例如带有bucket和哈希的字典?

一如既往,您需要在应用程序上下文中进行基准测试以确保

然而,我希望在这种情况下,一个实现良好的哈希表可能会被证明是最快的。这基本上需要:

  • 一次扫描字符串以计算哈希值,通常使用非常快速的操作,如位移位/XOR
  • 一个基于哈希值的哈希表查找
  • 一个字符串比较,以确认您有正确的单词
  • 在发生哈希冲突的情况下进行一点额外的处理-但是,您可以调整哈希表大小以将此最小化
基数树也会非常快,因为需要遍历多个层次的树节点,所以只会有一点点额外的开销。如果您的树相对稀疏,则可能只需向下搜索少量级别即可找到唯一的答案。基数树的一个优点是,如果没有可能的匹配项,它会很早告诉您(例如,以“qq”开头的树的空分支)


二叉树可能是最慢的,因为它平均需要搜索相当多级别的树节点。但是,对于大多数情况,它仍然足够快。

您确定在这种情况下需要绝对最佳的性能吗?数据集的大小是多少?此外,决定因素可能是执行的质量。我建议为任务使用一个成熟的哈希表实现。数据集将略低于200k个条目。这本书读起来很重,写得很轻。我想可能是我想要的,根据你所说的,一棵基数树会赢。它的另一个优点是自动知道单词的词根是什么。