栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

字符串匹配性能:gcc与CPython

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

字符串匹配性能:gcc与CPython

python 3.4代码

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

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

快速的搜索/计数实现,基于博耶摩尔和霍尔斯普尔的混合体,顶部还有更多的花哨功能。有关更多背景信息,请参见:http
//effbot.org/zone/stringlib.htm

如评论所述,也有一些修改:

注意:fastsearch可以访问

s[n]
,这在使用Python的普通字符串类型时不是问题,但是如果在其他上下文中使用此代码,则可能会导致问题。同样,
-1

如果目标字符串中不可能存在匹配项,并且
0
实际上已经检查了匹配项但没有找到匹配项,则计数模式将返回。来电者要当心!


的GNU C
++标准库

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


TL; DR :C
++标准库之所以与Python相比如此之慢,是因为它试图在之上执行通用算法

std::basic_string<char>
,但在更有趣的情况下却无法有效地实现;而在Python中,程序员可以根据情况免费获得最高效的算法。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/662501.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号