下面的函数需要两个BitSets,复制第一个(它不能被覆盖),将副本与第二个(按位AND)相交并返回结果的基数.
public int getIntersectionSize(BitSet bits1, BitSet bits2) {
BitSet copy = (BitSet) bits1.clone();
copy.and(bits2);
return copy.cardinality();
}
Run Code Online (Sandbox Code Playgroud)
我对这段代码加速感兴趣吗?这个功能被称为十亿次,所以即使是微秒加速也是有道理的,而且我对最快的代码感到好奇.
在 中Java8,想要比较Int2ObjectOpenHashMap(fastutil库)和HashMap<Integer, MyObj>我的应用程序中的时间性能和内存消耗。之前我迭代了java标准hashmap,如下所示:
HashMap<Integer, MyObj> myobjs = new HashMap<Integer, MyObj>();
// fill myobjs in
for (Map.Entry<Integer, MyObj> obj : myobjs.entrySet()) {
...
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能迭代(以尽可能最快的方式)Int2ObjectOpenHashMap?
在中Java8,让List<Item> list我按以下顺序进行处理:
ConcurrentMap<String, Integer> map = new ConcurrentHashMap<String, Integer>();
for (int i1 = 0; i1 < list.size() - 1; i1++) {
Item item1 = list.get(i1);
for (int i2 = i1 + 1; i2 < list.size(); i2++) {
Item item2 = list.get(i2);
doSomething(item1, item2);
}
}
Run Code Online (Sandbox Code Playgroud)
因此,我处理列表中所有有序的项目对(索引item1<的索引,<的索引item2)。现在,我想doSomething(item1, item2)为每个有序对并行运行函数。实现这一目标的最佳策略是什么?对最快的代码感兴趣。Java8流欢迎。
doSomething比如做:map.put(item1.key + " " + item2.key, item1.val + item2.val);。
有序对的数量n * (n - 1) / 2,其中 …
java ×3
bitset ×1
cardinality ×1
hashmap ×1
intersection ×1
iteration ×1
java-8 ×1
java-stream ×1
list ×1