如何计算相同的字节数

tno*_*rgd 1 java algorithm

我有两个长字节数组,我需要计算相应位置上的字节数是否相同.我的解决方案(在JAVA中)如下:

    int sum = 0;
    for(int i = 0;i < t.length;i++)
      if (t[i] == spb[i])
        sum++;
Run Code Online (Sandbox Code Playgroud)

由于我的程序的这部分需要相当长的时间,我想知道我是否可以更快地完成这项工作

显然,两个阵列的长度是相同的

Sim*_*son 6

如果数组很长,您可以使用多个并发线程来计算数组部分的部分和,然后总结部分总和.


Jon*_*eet 5

不,你基本上做的是正确的事情(至少对于一个线程 - 西蒙的使用多线程的想法很好).这需要多长时间,阵列有多长?它应该很快.

可以通过创建ByteBuffer字节数组周围来加速它,然后再使用它asLongBuffer来创建LongBuffer包装它.然后,您可以一次检查8个字节(如长),​​仅在long比较返回false 时检查单个字节.这将是显著更复杂的代码,但-我也不会在所有惊讶地发现,它实际上是慢了很多.