Java获取BitSet交集基数的最快方法
发布时间:2020-12-15 01:03:13 所属栏目:Java 来源:网络整理
导读:下面的函数需要两个BitSets,复制第一个(它不能被覆盖),将副本与第二个(按位AND)相交并返回结果的基数. public int getIntersectionSize(BitSet bits1,BitSet bits2) { BitSet copy = (BitSet) bits1.clone(); copy.and(bits2); return copy.cardinality();}
下面的函数需要两个BitSets,复制第一个(它不能被覆盖),将副本与第二个(按位AND)相交并返回结果的基数.
我对这段代码加速感兴趣吗?这个功能被称为十亿次,所以即使是微秒加速也是有道理的,而且我对最快的代码感到好奇. 最佳答案
如果您要多次使用每个BitSet,那么创建一个对应于每个BitSet的长数组可能是值得的.对于每个BitSet:
然后,您可以使用以下方法,这可以避免创建克隆BitSet的开销. (这假设两个数组的长度相同).
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |