c++ - 比较两个字符串的最佳或最快方法是什么?

标签 c++ string performance

我不确定下面的代码有多快。如果有人知道比这更快/优化的代码,请告诉我。

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/

相关文章:

performance - 如果假设 1d 预排序向量,在 matlab 中实现 unique() 的更快方法?

c++ - 为什么 const std::random_device 不可能?

c - 如何在C中创建带有字符X的可变长度字符串

string - 在 valgrind 中读取和写入大小无效

python - 如何摆脱python字符串中的b前缀?

java - JAXB 与 DOM 和 SAX

performance - PostgreSQL 在包含数组和大量更新的大表上运行缓慢

c++ - 仿函数重载最佳实践

c++ - 如何在 Visual Studio Code 中的构建目标之间切换?

c++ - Qt中如何按区域填充不同颜色段的圆角矩形?