一个时钟周期内的 C++ 字符串比较

标签 c++ string assembly comparison

是否可以在单个处理器周期内比较整个内存区域?更准确地说,是否可以使用某种 MMX 汇编指令在一个处理器周期内比较两个字符串?或者 strcmp 的实现是否已经基于该优化?

编辑: 或者是否可以指示 C++ 编译器删除重复的字符串,以便可以简单地通过它们的内存位置来比较字符串?而不是 memcmp(a,b)a==b 比较(假设 ab 都是 native const char* 字符串)。

最佳答案

只需使用标准 C strcmp() 或 C++ std::string::operator==() 进行字符串比较。

它们的实现相当不错,并且可能被编译成一个高度优化的程序集,即使是有才华的程序集程序员也很难与之匹敌。

所以不要为小事而烦恼。我建议考虑优化代码的其他部分。

关于一个时钟周期内的 C++ 字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1128096/

相关文章:

c++ - 如何减少大量包装类的实现代码?

java - 用逗号将整数转换为字符串数千

assembly - 访问跨 MMU 页边界的变量

c++ - 在 GLM 中加载纹理

c++ - 找出 .h 文件之间的#define 语句冲突

c++ - 为什么 std::basic_string 不支持通过表达式模板进行连接?

assembly - 汇编代码的.bss部分

linux - 输出有问题,不读跳转

c++ - 我可以对不同的网址使用相同的 curl 句柄吗? (试图从一个网址的多个页面下载数据)

java - 为什么 String + '\u0000' 与 String 不同?