下面的函数接收两个
我想知道这段代码是否可以加速?该函数被调用了数十亿次,因此即使微秒级别的加速也有意义,而且我对最快的可能代码很感兴趣。
BitSet
,复制第一个(不要覆盖它),与第二个进行交集计算(按位与),并返回结果的基数。public int getIntersectionSize(BitSet bits1, BitSet bits2) {
BitSet copy = (BitSet) bits1.clone();
copy.and(bits2);
return copy.cardinality();
}
我想知道这段代码是否可以加速?该函数被调用了数十亿次,因此即使微秒级别的加速也有意义,而且我对最快的可能代码很感兴趣。
intersects
方法可以被改进来实现这个功能,只需将(a & b) != 0
替换为Long.countBits(a & b)
并求和即可。但是这需要访问私有变量words
。 - Andy Turner