Hi guys,我在 BitSet(JDK1.8)中看到,通过bitIndex获取wordIndex的方法如下: /**
* Given a bit index, return word index containing it.
*/
private static int wordIndex(int bitIndex) { return bitIndex >> ADDRESS_BITS_PER_WORD;
}其中 ADDRESS_BITS_PER_WORD 的说明如下, /*
* BitSets are packed into arrays of "words." Currently a word is
* a long, which consists of 64 bits, requiring 6 address bits.
* The choice of word size is determined purely by performance concerns.
*/
private final static int ADDRESS_BITS_PER_WORD = 6;我对ADDRESS_BITS_PER_WORD =6 持有疑惑,为什么基于性能考虑要选择6? 具体能说一下么?
1 回答
交互式爱情
TA贡献1712条经验 获得超3个赞
BitSet
选择使用long[]
来保存位数,long
是64位的,所以需要6位数寻址。至于说性能考虑应该是说选择long比 int ,byte 等的位数长,只需相对更低频的扩展数组来保存对应位数。
应该注意到这个实现只是一个简单实现,当需要设置很大的一位时,前面没有使用的long浪费了很大空间,这种情况下需要使用更高效的位数保存方案。
添加回答
举报
0/150
提交
取消