我不确定下面的代码有多快。如果有人知道比这更快/优化的代码,请告诉我。
int xstrcmp(char *s1, char *s2)
{
while (*s1 == *s2++)
if (*s1++ == 0)
return (0);
return (*(const unsigned char *)s1 - *(const unsigned char *)(s2-1));
}
最佳答案
使用 ::strcmp
而不是您自己的手动版本。您的编译器供应商很可能有一个仅汇编版本,它使用特定于 CPU 的功能进行比较(例如 SSE4.2 有用于快速字符串比较的特殊说明。)例如,MSVC 版本是用汇编编写的,并使用更大的比较(整个单词而不是单个字符)尽可能多地,特殊外壳未对齐的字符串开始/结束(如果你安装了 VS2010,它在 VC/crt/src/intel/strcmp.asm
.)
关于c++ - 比较两个字符串的最佳或最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9442390/