我在我的C#应用程序中使用了一个分析器,并意识到String.Compare()总体上耗费了大量时间:总时间的43%,124M命中率
我正在比较相对较小的字符串:从4到50个字符。 你会建议用性能来替换它吗?
UPD:我只需要判断2个字符串是否相同。字符串可以是零或“”。没有文化方面或任何其他方面。大部分时间它都是“4578D”而不是“1235E”或类似的。
非常感谢提前!
答案 0 :(得分:4)
这取决于您想要进行的比较。如果你只关心相等性,那么使用Equals
重载中的一个 - 例如,更快地发现两个字符串的长度不同于比较它们的内容。
如果您对序数比较感到满意,请明确指出:
int result = string.CompareOrdinal(x, y);
序数比较很多比文化敏感的比较快。
当然,这假设顺序比较为您提供了所需的结果 - 正确性通常比性能更重要(尽管并非总是如此)。
编辑:好的,所以只想要测试是否相等。我只使用==
运算符,该运算符使用序数相等比较。
答案 1 :(得分:1)
您可以使用不同的方式比较字符串。
String.Compare(str1, str2, StringComparison.CurrentCulture) // default
String,Compare(str1, str2, StringComparison.Ordinal) // fastest
进行序数比较可能比文化相关比较快两倍。
如果对相等进行比较,并且字符串不包含任何文化依赖字符,则可以很好地使用序数比较。