bit*_*kar -2 c# string performance contains indexof
我想知道是否
string.IndexOf(char)
Run Code Online (Sandbox Code Playgroud)
是更快的比
string.Contains(string)
Run Code Online (Sandbox Code Playgroud)
目的是检查单个字符是否存在于string. 我知道根据要求我应该使用,string.Contains(string)但这不是这个问题的重点。我确实尝试反汇编 mscorlib.dll以比较它们的实现,但我找不到
string.IndexOf(char)
Run Code Online (Sandbox Code Playgroud)
因为它是在CLR 本身内实现的。实施
string.Contains(string)
Run Code Online (Sandbox Code Playgroud)
不过看起来很重。
只需测试并查看
String source = new String('a', 10000000) + "b" + new String('c', 10000000);
Stopwatch sw = new Stopwatch();
sw.Start();
// Just an estimation
int result = source.IndexOf('b');
// int result = source.IndexOf("b");
// Boolean result = source.Contains("b");
// Boolean result = source.Contains('b');
sw.Stop();
int time = sw.ElapsedMilliseconds;
Run Code Online (Sandbox Code Playgroud)
在我的工作站(I5 3.2千兆赫,净5.0 64位)大约需要10毫秒为Char和38毫秒为String
编辑:性能的结果是
IndexOf(Char) 10 -- Fastest
IndexOf(String) 38
Contains(Char) 100 -- Slowest
Contains(String) 41
Run Code Online (Sandbox Code Playgroud)
所以IndexOf(String)和Contains(String)大致相同