我正在使用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/

10-17 02:49