您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

字符串匹配性能:gcc与CPython

字符串匹配性能:gcc与CPython

python 3.4代码b'abc' in b'abcabc'(或b'abcabc'.__contains__(b'abc')如您的示例所示)执行bytes_contains方法,该方法调用内联函数stringlib_find;将搜索委派给FASTSEARCH

FASTSEARCH然后,该函数使用简化的Boyer- Moore搜索算法(Boyer- Moore- Horspool):

评论所述,也有一些修改

注意:fastsearch可以访问s[n],这在使用Python的普通字符串类型时不是问题,但是如果在其他上下文中使用此代码,则可能会导致问题。同样,-1 如果目标字符串中不可能存在匹配项,并且0实际上已经检查了匹配项但没有找到匹配项,则计数模式将返回。来电者要当心!

GNU C ++标准库basic_string<T>::find()实现是通用的(和哑)成为可能; 它只是在每个连续的字符位置尝试哑匹配模式,直到找到匹配为止。

:C ++标准库之所以与Python相比如此之慢,是因为它试图在之上执行通用算法std::basic_string<char>,但在更有趣的情况下却无法有效地实现;而在Python中,程序员可以根据情况免费获得最高效的算法。

python 2022/1/1 18:38:25 有254人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶