[英]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.