繁体   English   中英

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

[英]Is isprefix more expensive than comparing two strings in C#?

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

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

我希望核心不会有显着差异,因为IsPrefix本质上是:

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

但是,由于应用的I18N级别,String的运算符==和CompareInfo类之间可能会有差异。

最后,您需要进行评估,但是我希望在99%的情况下,任何差异对整体应用程序性能都不重要。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM