memcmp - 有一种更快的方式来逐位比较两个缓冲区

时间:2017-02-09 10:50:11

标签: c++ performance memory comparison

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

我对除了布尔"之外的任何东西都不感兴趣"我希望方法能够尽快返回,即发现第一个差异。

实现这一目标的最佳方法是什么? 我现在首先比较我所知道的整体规模和使用情况 memcmp如果它们的大小相同

memcmp( buf1_ptr, buf2_ptr, sizeof(buf1) )

这是我能做的最有效的吗?我应该将比较分成for循环的junks吗?

1 个答案:

答案 0 :(得分:3)

一般来说,memcmp将由专家用汇编语言编写。在它解决的一般目的问题上,你不可能做得比他们更好。

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

否则 - 只需使用memcmp。