我正在使用C#连续搜索大字符串(> = 4kb)中的多个字符串“关键字”。这段代码不断循环,并且 sleep 无法充分降低CPU使用率,同时又保持合理的速度。深入了解是关键字匹配方法。
我发现了一些可能性,并且所有这些都具有相似的效率。
1)http://tomasp.net/articles/ahocorasick.aspx
-我没有足够的关键字来使其成为最有效的算法。
2)正则表达式。使用实例级别,编译正则表达式。
-提供比我需要的功能更多的功能,并且效率不够。
3)String.IndexOf。
-我需要对此做一个“智能”版本,以提供足够的效率。遍历每个关键字并调用IndexOf不会削减它。
有人知道我可以用来实现目标的任何算法或方法吗?
最佳答案
您是否一直在寻找相同的关键字?
尝试Boyer-Moore。它需要对关键字进行一些预处理,但随后会加快速度。
关于C#:有效搜索大字符串以查找其他字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1031292/