memcmp - 是否有更快的方法来按位比较两个缓冲区
memcmp - is there a faster way to bitwise compare two buffers
我想最快速有效地找出两个内存缓冲区 - 保存任意定义的值 - 在按位比较中是否相同。
除了布尔值"相同"之外,我对任何事情都不感兴趣,我希望该方法尽快返回,即首先发现差异。
实现这一目标的最佳方法是什么?我首先比较整体尺寸 - 我知道 - 并使用 memcmp
它们的大小是否相同
memcmp( buf1_ptr, buf2_ptr, sizeof(buf1) )
这是我能做的最有效的事情吗?我应该将比较拆分为 for 循环的垃圾吗?
一般来说,memcmp
都是由专家用汇编程序编写的。 在它解决的通用问题上,你不可能比他们做得更好。
如果你能保证指针将始终(例如(在 16 字节边界上对齐,并且长度将始终是 16 字节的倍数,那么通过使用一些矢量化解决方案(如 SSE(可以做得更好一点。 (在这种情况下,memcmp 最终也可能使用 SSE,但它必须首先进行一些测试以确保 - 您可以节省这些测试的成本(。
否则 - 只需使用 memcmp。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- C++字符*缓冲区的大小
- 为什么比较运算符如此快速
- 我可以使用 g++ 进行三种比较 (<=>) 吗?
- 为什么msgrcv()将垃圾字符馈送到缓冲区
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- ostream过载时的缓冲区冲洗
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- 比较字符数组
- 将模板化的类型与C++中的某些类/类型进行比较
- Xaudio2在更改缓冲区或循环时弹出声音
- C++自定义比较函数
- 如何比较自定义类的std::变体
- 绘制一个对象,比较模具缓冲区的两个不同值
- 将constexpr字节数组与缓冲区的一部分(指向数据的指针)进行比较
- 将数组与传入的字节*缓冲区进行比较的最快方法
- memcmp - 是否有更快的方法来按位比较两个缓冲区
- c++ 比较在缓冲区的 2 个字符串之间不起作用
- 将缓冲区与字符进行比较是无效的
- 比较多个深度缓冲区