首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >String.Contains()比String.IndexOf()快吗?

String.Contains()比String.IndexOf()快吗?
EN

Stack Overflow用户
提问于 2009-01-31 11:42:37
回答 9查看 121.8K关注 0票数 116

我有一个大约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)?

代码语言:javascript
复制
    // 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);

Fun fact

EN

回答 9

Stack Overflow用户

发布于 2009-01-31 19:47:25

也许,这根本无关紧要。阅读这篇关于编码恐怖的文章;):http://www.codinghorror.com/blog/archives/001218.html

票数 22
EN

Stack Overflow用户

发布于 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完全相同,但它更短,而且让你的意图更清晰。

票数 11
EN

Stack Overflow用户

发布于 2009-01-31 11:59:23

通过使用反射器,您可以看到,Contains是使用IndexOf实现的。下面是实现。

代码语言:javascript
复制
public bool Contains(string value)
{
   return (this.IndexOf(value, StringComparison.Ordinal) >= 0);
}

所以Contains可能比直接调用IndexOf慢一点,但我怀疑它对实际性能有任何意义。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/498686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档