我有一个大约2000个字符的字符串缓冲区,需要检查缓冲区是否包含特定的字符串。
将在ASP.NET 2.0 the应用程序中为每个the请求执行检查。
有没有人知道String.Contains method的性能是否优于String.IndexOf方法(http://msdn.microsoft.com/en-us/library/system.string.indexof(VS.80%29.aspx)?
// 2000 characters in s1, search token in s2
string s1 = "Many characters. The quick brown fox jumps over the lazy dog";
string s2 = "fox";
bool b;
b = s1.Contains(s2);
int i;
i = s1.IndexOf(s2);
发布于 2009-01-31 19:47:25
也许,这根本无关紧要。阅读这篇关于编码恐怖的文章;):http://www.codinghorror.com/blog/archives/001218.html
发布于 2009-01-31 14:10:35
Contains(s2)比IndexOf(s2)快很多倍(在我的电脑中是10倍),因为Contains使用的StringComparison.Ordinal比IndexOf在默认情况下执行的区分区域性的搜索更快(但在.net 4.0 http://davesbox.com/archive/2008/11/12/breaking-changes-to-the-string-class.aspx中可能会发生变化)。
在我的测试中,Contains的性能与IndexOf(s2,StringComparison.Ordinal) >= 0完全相同,但它更短,而且让你的意图更清晰。
发布于 2009-01-31 11:59:23
通过使用反射器,您可以看到,Contains是使用IndexOf实现的。下面是实现。
public bool Contains(string value)
{
return (this.IndexOf(value, StringComparison.Ordinal) >= 0);
}
所以Contains可能比直接调用IndexOf慢一点,但我怀疑它对实际性能有任何意义。
https://stackoverflow.com/questions/498686
复制相似问题