6

我需要快速比较机器上支持 SSE4 的两个字符串。在不编写汇编程序插入的情况下如何做到这一点?

一些包装器就像long long bitmask = strcmp(char* a, char* b)是完美的。

4

3 回答 3

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

于 2012-05-13T21:07:04.883 回答
2

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

他已经不厌其烦地为您编写汇编代码,包括使用 SSE4.2 指令。使用他的功能A_strcmp(或不区分大小写的版本A_stricmp)。

有趣的是,使用内在函数的方法如何比较性能。

于 2013-06-03T14:05:48.300 回答
0

这是一篇关于使用 SSE 4.2 提升字符串操作的好文章:http: //www.strchr.com/strcmp_and_strlen_using_sse_4.2

于 2013-06-03T07:42:01.437 回答