我用了一個探查我的C#應用程序,並意識到,String.Compare()正在採取了大量的時間總:43%的有124M的總時間命中替代String.Compare性能
我比較相對較小的字符串:從4到50個字符。 你會推薦什麼來取代它的性能?
UPD:我只需要確定2個字符串是否相同。字符串可以是零或「」。沒有文化方面或任何其他方面。大多數情況下,它將是「4578D」,而「1235E」或類似。
非常感謝提前!
我用了一個探查我的C#應用程序,並意識到,String.Compare()正在採取了大量的時間總:43%的有124M的總時間命中替代String.Compare性能
我比較相對較小的字符串:從4到50個字符。 你會推薦什麼來取代它的性能?
UPD:我只需要確定2個字符串是否相同。字符串可以是零或「」。沒有文化方面或任何其他方面。大多數情況下,它將是「4578D」,而「1235E」或類似。
非常感謝提前!
這取決於你想做什麼樣的比較。如果您只關心平等,則使用Equals
重載之一 - 例如,發現兩個字符串具有不同的長度比比較其內容更快。
如果你是快樂與序號比較,明確規定:
int result = string.CompareOrdinal(x, y);
的序號比較可能比一個文化敏感的一個快多。
當然,這假設序數比較會給你你想要的結果 - 正確性通常比性能更重要(雖然不總是)。
編輯:好的,所以你只有想要測試平等。我只是使用==
運算符,它使用了序數相等比較。
您可以使用不同的方式比較字符串。
String.Compare(str1, str2, StringComparison.CurrentCulture) // default
String,Compare(str1, str2, StringComparison.Ordinal) // fastest
進行序數比較可以是比文化相關比較快兩倍。
如果您比較相等性,並且字符串不包含任何文化依賴性字符,則可以很好地使用序數比較。
這取決於你的用例!你想讓文化意識的比較與否? –
我只關心2個字符串是否相等。我會把更新。感謝您指出。 – trailmax