memcmp - 是否有更快的方法来按位比较两个缓冲区

memcmp - is there a faster way to bitwise compare two buffers

本文关键字:比较 缓冲区 两个 是否 方法 memcmp      更新时间:2023-10-16

我想最快速有效地找出两个内存缓冲区 - 保存任意定义的值 - 在按位比较中是否相同。

除了布尔值"相同"之外,我对任何事情都不感兴趣,我希望该方法尽快返回,即首先发现差异。

实现这一目标的最佳方法是什么?我首先比较整体尺寸 - 我知道 - 并使用 memcmp它们的大小是否相同

memcmp( buf1_ptr, buf2_ptr, sizeof(buf1) )

这是我能做的最有效的事情吗?我应该将比较拆分为 for 循环的垃圾吗?

一般来说,memcmp都是由专家用汇编程序编写的。 在它解决的通用问题上,你不可能比他们做得更好。

如果你能保证指针将始终(例如(在 16 字节边界上对齐,并且长度将始终是 16 字节的倍数,那么通过使用一些矢量化解决方案(如 SSE(可以做得更好一点。 (在这种情况下,memcmp 最终也可能使用 SSE,但它必须首先进行一些测试以确保 - 您可以节省这些测试的成本(。

否则 - 只需使用 memcmp。