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