我想要最快速和最快有效地找出两个内存缓冲区 - 保持任意定义的值 - 在逐位比较中是否相同。
我对除了布尔"之外的任何东西都不感兴趣"我希望方法能够尽快返回,即发现第一个差异。
实现这一目标的最佳方法是什么?
我现在首先比较我所知道的整体规模和使用情况
memcmp
如果它们的大小相同
memcmp( buf1_ptr, buf2_ptr, sizeof(buf1) )
这是我能做的最有效的吗?我应该将比较分成for循环的junks吗?
答案 0 :(得分:3)
一般来说,memcmp
将由专家用汇编语言编写。在它解决的一般目的问题上,你不可能做得比他们更好。
如果你可以保证指针总是(例如)在16字节边界上对齐,并且长度总是16字节的倍数,你可以做一个使用像SSE这样的矢量化解决方案会更好一点。 (在这种情况下,memcmp可能最终也会使用SSE,但它必须首先进行一些测试以确保 - 并且您可以节省这些测试的成本。)
否则 - 只需使用memcmp。