我需要快速比较机器上支持 SSE4 的两个字符串。在不编写汇编程序插入的情况下如何做到这一点?
一些包装器就像long long bitmask = strcmp(char* a, char* b)
是完美的。
您应该使用英特尔 SSE 内在函数,而不是使用内联汇编。
对于字符串比较,您需要 SSE4.2 内在函数:
使用 Agner Fog 的 asmlib。 http://www.agner.org/optimize/#asmlib
他已经不厌其烦地为您编写汇编代码,包括使用 SSE4.2 指令。使用他的功能A_strcmp
(或不区分大小写的版本A_stricmp
)。
有趣的是,使用内在函数的方法如何比较性能。
这是一篇关于使用 SSE 4.2 提升字符串操作的好文章:http: //www.strchr.com/strcmp_and_strlen_using_sse_4.2