char数组形式有两个位图数组,有数百万条记录。什么是使用C来比较它们的最快方法。
我可以想象在for循环中一次使用按位运算符xor 1个字节。
关于位图的重点:
目的:
答案 0 :(得分:2)
这个答案假设您将'位图'表示为0/1值的序列而不是'位图图像格式'
如果你只是有两个相同长度的位图并希望快速比较它们,memcmp()
将会像评论中建议的那样有效。您可以尝试使用SSE类型优化,但这些并不像memcmp()
那么简单。 memcmp()
假设您只是想知道'他们是不同的',仅此而已。
如果你想知道他们有多少比特,例如615位不同,那么除了对每个字节进行XOR并计算差异数量之外,你几乎没有其他选择。正如其他人所指出的那样,您可能希望一次以32/64甚至256位执行此操作,具体取决于您的平台。但是,如果数组的长度是数百万字节,那么最大的延迟(使用当前的CPU)将是将主内存传输到CPU的时间,并且CPU的作用并不重要(这里有很多注意事项)
如果你的问题更多的是要求比较A和B,但是你真的这么做很多次,比如A到B和C,D,E等,那么你可以做几件事
所有选项A..D都是关于减少主内存访问,因为这是任何性能提升的结点(对于所述的问题)