我可以调整IndexOf选择吗?

时间:2017-04-02 17:34:08

标签: c# .net performance indexof .net-4.6.2

我有很长一段时间对应用程序进行了性能分析

事实证明,IndexOf函数

使用了大部分CPU

enter image description here

这里的功能

public static string func_Fix_Google_Source(string srSource)
{
    int irIndex = srSource.IndexOf("<div id=\"gt-form-c\">");
    return srSource.Substring(irIndex);
}

弦的长度很重要?我可以缩短搜索字符串的长度,我相信

2 个答案:

答案 0 :(得分:2)

如果子字符串搜索成为瓶颈,您可以切换到高级算法,例如KMP

当你有很多“误报”时,默认字符串搜索可能非常昂贵,例如:很多

<div id="...

在被搜索的文本中。

每次在匹配未开始的位置发现上面的前缀时,默认算法会跟随它,以确认没有匹配,然后进入下一个位置。相比之下,KMP会跳过它已经看过的许多角色,从而提高了效率。

答案 1 :(得分:1)

除了改进搜索方式之外,您可能已经完成了评论,IndexOf(string)重载使用当前文化进行比较。

使用StringComparision重载进行序数搜索将提供更好的性能。取决于你在做什么~8x。

int irIndex = srSource.IndexOf("<div id=\"gt-form-c\">", StringComparison.Ordinal);