精易论坛

标题: 字符串匹配——Sunday算法 [打印本页]

作者: jr21066    时间: 2018-11-13 22:33
标题: 字符串匹配——Sunday算法
比较了一下.比系统寻找文本快四倍,好象没多大用.系统的其实也很快了.
除非你喜欢在几百兆的文件里寻找...

  
子程序名返回值类型公开备 注
文本_搜索文本_汇编整数型 
参数名类 型参考可空数组备 注
参数一文本型
参数二文本型
变量名类 型静态数组备 注
局_长度1整数型 
局_长度2整数型 
局_长度1 = 汇编_取文本长度_SSE2 (参数一)
局_长度2 = 汇编_取文本长度_SSE2 (参数二)
置入代码 ({ 139, 69, 8, 139, 48, 139, 85, 252, 1, 242, 139, 69, 12, 139, 56, 139, 77, 248, 137, 200, 81, 87, 243, 166, 41, 200, 95, 89, 57, 200, 116, 43, 1, 198, 81, 87, 82, 138, 68, 14, 255, 141, 92, 15, 255, 137, 218, 56, 3, 116, 3, 75, 226, 249, 41, 218, 1, 214, 90, 95, 89, 141, 4, 14, 57, 208, 127, 2, 235, 204, 49, 192, 72, 235, 15, 139, 69, 8, 139, 0, 70, 41, 198, 139, 85, 248, 41, 214, 137, 240, 201, 194, 8, 0 })
返回 (0)
子程序名返回值类型公开备 注
汇编_取文本长度_SSE2整数型 整改者:落
参数名类 型参考可空数组备 注
参_文本通用型文本变量或文本指针
置入代码 ({ 139, 69, 8, 139, 0, 133, 192, 116, 59, 80, 137, 193, 102, 15, 239, 192, 131, 225, 15, 131, 224, 240, 102, 15, 111, 8, 102, 15, 116, 200, 102, 15, 215, 209, 211, 234, 211, 226, 15, 188, 210, 117, 20, 131, 192, 16, 102, 15, 111, 8, 102, 15, 116, 200, 102, 15, 215, 209, 15, 188, 210, 116, 236, 89, 41, 200, 1, 208, 201, 194, 4, 0 })
' mov eax,dword ptr ss:[ebp+0x8]
' mov eax,dword ptr ds:[eax]
' test eax,eax
' je end_
' push eax
' mov ecx,eax
' pxor xmm0,xmm0
' and ecx,0xF
' and eax,0xFFFFFFF0
' movdqa xmm1,xmmword ptr ds:[eax]
' pcmpeqb xmm1,xmm0
' pmovmskb edx,xmm1
' shr edx,cl
' shl edx,cl
' bsf edx,edx
' jne Label_a
' Label_b:
' add eax,0x10
' movdqa xmm1,xmmword ptr ds:[eax]
' pcmpeqb xmm1,xmm0
' pmovmskb edx,xmm1
' bsf edx,edx
' je Label_b
' Label_a:
' pop ecx
' sub eax,ecx
' add eax,edx
' end_:
' leave
' ret 0x4
返回 (0)


作者: 天使缔缘    时间: 2018-11-14 10:37

作者: dzpos    时间: 2018-11-14 20:53
用的是汇编呢
作者: ysn2382617094ws    时间: 2018-11-15 20:05
感谢分享,对我很有益,谢谢咯
作者: gf5225537    时间: 2018-11-16 10:51
谢谢分享谢谢
作者: wanliyingxiap    时间: 2018-11-22 15:00
我想问下, 文本搜索文本, 是不是寻找文本中指定文本的意思。 两个参数代表什么意思
作者: jr21066    时间: 2018-11-22 17:51
wanliyingxiap 发表于 2018-11-22 15:00
我想问下, 文本搜索文本, 是不是寻找文本中指定文本的意思。 两个参数代表什么意思

是在参数一中寻找包含参数二的文本的开始位置,就是搜索字符串.搜索文本的意思.
作者: wanliyingxiap    时间: 2018-11-23 15:00
jr21066 发表于 2018-11-22 17:51
是在参数一中寻找包含参数二的文本的开始位置,就是搜索字符串.搜索文本的意思.

这个应该就是寻找文本的意思了, 不过看起来应该更快
作者: liangjia    时间: 2019-6-13 02:54
我刚好语言到6g的文件里找,不知道行不行,如果有高手写一个布隆过滤器就好了
作者: jingyizhanghao    时间: 2019-8-15 18:44
支持开源~!感谢分享
作者: cf2006a    时间: 2020-3-12 09:53
本帖最后由 cf2006a 于 2020-3-12 09:59 编辑

没有设计net数组用loop 循环找字符串是否存在 很耗时




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4