我正在使用C#来连续搜索大字符串中的多个字符串“关键字”,这是大于4kb。这段代码不断循环,睡眠不会在保持合理的速度的同时减少足够的CPU使用。缓冲是关键字匹配方法。C#:高效地搜索大字符串发生其他字符串
我发现了一些可能性,它们都具有相似的效率。
1)http://tomasp.net/articles/ahocorasick.aspx - 我没有足够的关键字使其成为最有效的算法。
2)正则表达式。使用实例级别,编译正则表达式。 - 提供比我需要的更多功能,效率不够。
3)String.IndexOf。 - 我需要做一个“智能”版本,因为它提供了足够的效率。循环访问每个关键字并调用IndexOf不会削减它。
有谁知道任何算法或方法,我可以用来实现我的目标?
拾遗从下面的评论,字符串的转换的回避信息,并保持在东西[字节数组](http://stackoverflow.com/a/283648/512671)可能是最快的;并为字节数组实现一个定制的Boyer-Moore更快 – zanlok 2013-03-22 18:51:02