通过SSE4包装器比较字符串

时间:2012-05-13 20:19:18

标签: c++ sse sse4

我需要快速比较机器上的两个字符串和SSE4支持。如果不编写汇编程序插入,我怎么能这样做?

long long bitmask = strcmp(char* a, char* b)这样的包装将是完美的。

3 个答案:

答案 0 :(得分:9)

您应该使用英特尔SSE内在函数,而不是使用内联汇编。

对于字符串比较,您需要SSE4.2内在函数:

文档在这里: http://software.intel.com/sites/products/documentation/doclib/stdxe/2013/composerxe/compiler/cpp-mac/GUID-6E9CFDF2-5DF6-42A4-B429-0E2CD441342E.htm

答案 1 :(得分:0)

这是一篇使用SSE 4.2来增强字符串操作的好文章: http://www.strchr.com/strcmp_and_strlen_using_sse_4.2

答案 2 :(得分:0)

使用Agner Fog的asmlib。 http://www.agner.org/optimize/#asmlib

他已经为你在汇编中编写代码而烦恼,包括使用SSE4.2指令。使用他的函数A_strcmp(或不区分大小写的版本A_stricmp)。

使用内在函数的方法在性能上的比较会很有趣。