一种多策略字符串分段比较方法与流程

文档序号:37629383发布日期:2024-04-18 17:43阅读:8来源:国知局
一种多策略字符串分段比较方法与流程

本发明涉及一种多策略字符串分段比较方法,属于字符串处理。


背景技术:

1、字符串比较的主要功能是比较两个字符串的前n个字符是否相等。它首先将第一个字符串的首个字符对应的acsii值减去第二个字符串的首个字符对应的acsii值,如果差值>0则返回1,差值<0则返回-1,如果差值为0则继续比较下去直到其中一条字符串结束或达到规定长度n。字符串比较应用广泛,在数据库查询,文本处理,安全认证领域都有大量的应用,因此其性能也受到了广泛关注。现阶段,字符串比较有多种实现方法,其中一种有代表性的是单字节循环比较,每次比较字符串中的一个字符。另一种有代表性的是按8字节分段的字符串比较方法,其中低于8字节采用单字节循环比较,高于8字节采用8字节循环比较。以上研究更多的是考虑单字节比较或简单分段模式,未充分利用广泛的待比较数据长度范围与处理器支持的结构特性进行优化,导致字符串比较实现的优化方法单一、计算效率和准确率不高。


技术实现思路

1、本发明的目的在于克服现有技术中的不足,提供一种多策略字符串分段比较方法,解决现有的字符串比较手段存在方法单一,计算效率和准确率不高的技术问题。

2、为达到上述目的,本发明是采用下述技术方案实现的:

3、本发明提供了一种多策略字符串分段比较方法,包括:

4、响应于待比较字符串预设的待比较数据长度大于0,则判断两个所述待比较字符串的首字节是否相同;

5、响应于两个所述待比较字符串的首字节不相同,则计算所述首字节的ascll码值的差值,根据所述差值获取字符串比较结果;

6、响应于两个所述待比较字符串的首字节相同,则判断两个所述待比较字符串的内存首地址的后三位是否相同;

7、响应于两个所述待比较字符串的内存首地址的后三位不相同,则对所述待比较字符串进行拼接处理,并对拼接处理后的所述待比较字符串进行分段比较;

8、响应于两个所述待比较字符串的内存首地址的后三位相同,则判断两个所述待比较字符串的内存首地址是否均为8字节对界;

9、响应于两个所述待比较字符串的内存首地址不均为8字节对界,则对不为8字节对界的内存首地址进行处理使其8字节对界;

10、响应于两个所述待比较字符串的内存首地址均为8字节对界,则对所述待比较字符串进行提取,并对提取的所述待比较字符串进行分段比较。

11、可选的,响应于待比较字符串预设的待比较数据长度等于0,则结束比较,返回字符串比较结果为相同。

12、可选的,所述计算所述首字节的ascll码值的差值,根据所述差值获取字符串比较结果包括:

13、计算所述首字节的ascll码值的差值δascll:

14、δascll=aascll-bascll

15、式中,aascll、bascll为字符串a、b的首字节的ascll码值;

16、根据所述差值获取字符串比较结果:

17、δascll>1,字符串a大于字符串b;

18、δascll<1,字符串a小于字符串b。

19、可选的,所述判断两个所述待比较字符串的内存首地址的后三位是否相同包括:

20、将两个所述待比较字符串的内存首地址进行异或运算;

21、若异或运算结果和7进行与运算的结果为0,则两个所述待比较字符串的内存首地址的后三位相同;

22、若异或运算结果和7进行与运算的结果不为0,则两个所述待比较字符串的内存首地址的后三位不相同。

23、可选的,所述对所述待比较字符串进行拼接处理包括:

24、将两个所述待比较字符串的内存首地址后三位清零处理,根据处理后的所述内存首地址读取字符数据;

25、若读取到的字符数据不足8字节,则从下一内存地址读取字符数据并拼接补齐。

26、可选的,所述对拼接处理后的所述待比较字符串进行分段比较包括:

27、若所述待比较数据长度小于8,则基于所述待比较数据长度对拼接处理后的待比较字符串进行尾部去除,使用标量异或运算对尾部去除后的待比较字符串进行比较;

28、若所述待比较数据长度大于等于8,则对拼接处理后的待比较字符串每间隔8字节使用标量异或运算进行比较,当执行至总间隔长度大于所述待比较数据长度,则对当前间隔进行尾部去除,使用标量异或运算对尾部去除后的待比较字符串进行比较。

29、可选的,所述判断两个所述待比较字符串的内存首地址是否均为8字节对界包括:

30、针对两个所述待比较字符串的内存首地址;

31、若每个内存首地址和7进行与运算的结果为0,则两个所述待比较字符串的内存首地址均为8字节对界;

32、若存在内存首地址和7进行与运算的结果不为0,则两个所述待比较字符串的内存首地址不均为8字节对界。

33、可选的,所述对提取的所述待比较字符串进行分段比较包括:

34、若所述待比较数据长度小于8,则基于所述待比较数据长度对提取的所述待比较字符串进行尾部去除,使用标量异或运算对尾部去除后的待比较字符串进行比较;

35、若所述待比较数据长度大于等于8且小于等于128或所述待比较数据长度大于128且两个所述待比较字符串的内存首地址不均为32字节对界,则对拼接处理后的待比较字符串每间隔8字节使用标量异或运算进行比较,当执行至总间隔长度大于所述待比较数据长度,则对当前间隔进行尾部去除,使用标量异或运算对尾部去除后的待比较字符串进行比较;

36、若所述待比较数据长度大于128且两个所述待比较字符串的内存首地址均为32字节对界,则对拼接处理后的待比较字符串每间隔32字节使用向量异或运算进行比较,当执行至总间隔长度大于所述待比较数据长度,则对当前间隔进行尾部去除,使用向量异或运算对尾部去除后的待比较字符串进行比较;

37、其中,针对两个所述待比较字符串的内存首地址;

38、若每个内存首地址的首地址和31进行与运算的结果为0,则两个所述待比较字符串的内存首地址均为32字节对界;

39、若存在内存首地址和31进行与运算的结果不为0,则两个所述待比较字符串的内存首地址不均为32字节对界。

40、与现有技术相比,本发明所达到的有益效果:

41、本发明提供的一种多策略字符串分段比较方法,能够结合实际应用场景和字符串待比较长度,选择最佳分支策略,并针对不同分支,采取多种优化策略,包括首字符比较、尾部数据去除优化、循环代码段展开、标向量组合比较,分级预取等,从而实现待比较数据长度较小及待比较数据长度较大情形下的精准比较,有效减少循环判断与分支跳转开销,降低转移预测miss率,以此提高字符串比较的性能。



技术特征:

1.一种多策略字符串分段比较方法,其特征在于,包括:

2.根据权利要求1所述的多策略字符串分段比较方法,其特征在于,

3.根据权利要求1所述的多策略字符串分段比较方法,其特征在于,所述计算所述首字节的ascll码值的差值,根据所述差值获取字符串比较结果包括:

4.根据权利要求1所述的多策略字符串分段比较方法,其特征在于,所述判断两个所述待比较字符串的内存首地址的后三位是否相同包括:

5.根据权利要求1所述的多策略字符串分段比较方法,其特征在于,所述对所述待比较字符串进行拼接处理包括:

6.根据权利要求1所述的多策略字符串分段比较方法,其特征在于,所述对拼接处理后的所述待比较字符串进行分段比较包括:

7.根据权利要求1所述的多策略字符串分段比较方法,其特征在于,所述判断两个所述待比较字符串的内存首地址是否均为8字节对界包括:

8.根据权利要求1所述的多策略字符串分段比较方法,其特征在于,所述对提取的所述待比较字符串进行分段比较包括:


技术总结
本发明公开了一种多策略字符串分段比较方法,包括响应于待比较字符串预设的待比较数据长度大于0,则判断两个待比较字符串的首字节是否相同,首字节不相同则计算首字节的ASCLL码值的差值,根据差值获取字符串比较结果,首字节相同则判断两个待比较字符串的内存首地址的后三位是否相同,后三位不相同则对待比较字符串进行拼接处理,并对拼接处理后的待比较字符串进行分段比较,后三位相同则判断两个待比较字符串的内存首地址是否均为8字节对界,不对界则对不为8字节对界的内存首地址进行处理使其8字节对界,对界则对待比较字符串进行提取,并对提取的待比较字符串进行分段比较;本发明能够有效提升字符串比较性能。

技术研发人员:秦子桁,黄亮明,夏竹轩,蒋丽萍,邓洁,谢豪
受保护的技术使用者:无锡先进技术研究院
技术研发日:
技术公布日:2024/4/17
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1