【发布时间】:2012-08-28 20:08:48
【问题描述】:
我正在扩展我之前的问题python efficient substring search,
我有兴趣提高子字符串搜索实现的性能,
我上一个问题的一些答案指出,子字符串搜索是通过使用受 B-M 算法启发的 fastsearch 来实现的, 这是source code
更多答案将我指向 Boyer-Moore 算法、Rabin-Karp 算法的 python 实现。
使用这些算法(B-M,Rabin-Karp)嵌入 c 代码作为子字符串搜索的良好实现是否有效?
【问题讨论】:
-
@MartijnPieters:这是一个答案,贴出来!
-
通常你使用 C 代码(非嵌入)扩展 Python,例如,使用Cython(你不需要创建扩展模块的权限)。 100 次似乎也不错。你测试过代码吗?您是否尝试过在大字符串的开始/中间/结束/缺失时测量单词的性能(假设您的算法目标是在大字符串上使用)。这是一个如何优化 Python 的示例:Simple Python Challenge: Fastest Bitwise XOR on Data Buffers
-
我已阅读您的 RabinKarp 代码,但它不正确。如果
h==h256其中 h, h256 只有 256 个不同的值,则返回 true。嵌套循环什么都不做。 -
仔细阅读代码。
continue推进内部循环。它对外部循环没有任何作用。 -
@J.F. Sebastian:谢谢,你说得对,我现在就修复它并再次编辑所有内容,
标签: python c performance algorithm substring