isprefix比在C#中比较两个字符串更昂贵吗?

时间:2009-04-05 11:23:34

标签: c# string comparison

我正在做一些比较两个字符串的计算。如果我知道它们长度相同,那么调用isprefix或If(“string”==“string”)会更贵吗?

2 个答案:

答案 0 :(得分:6)

为什么不测试?很容易使用StopWatch类进行比较,并包含不同长度的字符串和不同的比较选项。

我认为核心没有显着差异,因为IsPrefix本质上是:

public bool IsPrefix(string comp, string prefix) {
  return Compare(comp, 0, prefix.Length, prefix, 0, prefix.Length);
}

然而,由于I18N的应用水平,String的operator ==和CompareInfo类之间可能存在差异。

最后,您需要进行衡量,但我预计99%的情况与整体应用程序性能无关。

答案 1 :(得分:1)

我会假设相等运算符实际上比较了两个字符串哈希值,而不是实际内容(至少作为一个失败的快速)

由于前缀匹配需要在哈希值比较之前创建子字符串,因此前缀匹配应该比完全相等匹配慢得多。

如果你有足够的字符串需要前缀匹配,你应该考虑实现一个TRIE结构(http://paste.lisp.org/display/12161

相关问题