对SSE2模式匹配算法SSE2PatternFind的一点改造优化
本帖最后由 xxHxx 于 2024-9-4 10:34 编辑为对某软件的指定模块打特征码补丁,最近研究学习了各种搜索算法(Sunday、Shift_And、BNDM等),对比发现,内存特征码搜索还是下面两位大佬基于SSE2指令集的搜索算法速度最快。
于是认真学习了两位大佬的文章,根据自己的理解做了一点点改造和优化,分享给大家,欢迎拍砖!!!
学习参考文章如下,感谢大佬们分享的好文!
https://bbs.kanxue.com/thread-209946.htm
https://www.52pojie.cn/thread-1854232-1-1.html
主要改进:
①通过掩码的方式使其支持 前、中、后通配符 及半字节;
②通过SSE2指令集找到特征码字节序列中的第一个不为'??'的元素后,后续的字节只比较不是'??'的特征字节,优化比较字节数。
通过测试,根据不同的特征码型式(特征码长度不同、通配符数量不同等),在我的环境中,比优化前(上面文章中代码)搜索速度提升5%~15%左右。
本人不是计算机专业,也不从事相关工作,纯属业余爱好,代码难免错漏,更谈不上优雅,望各位大佬批评指正!
20240904------判断特征码全都是'??'时,返回FALSE;修改结束搜索的条件。
**** Hidden Message *****
谢谢分享!!!
感谢表哥的分享 支持一下,虽然看不懂 感谢分享,学习一下 支持一下,虽然看不懂 感谢分享,学习一下 感谢分享,学习一下 谢谢分享!
谢谢大佬的分享!
回复学习一下