布尔[] vs. BitSet:哪个更有效?
2022-08-31 13:39:12
在内存和CPU使用率方面,什么更有效率 - 一个数组或一个BitSet?不使用特定的 BitSet 方法,只使用 get/set/clear(对于数组,则分别为 ==、=、Arrays.fill)。boolean
在内存和CPU使用率方面,什么更有效率 - 一个数组或一个BitSet?不使用特定的 BitSet 方法,只使用 get/set/clear(对于数组,则分别为 ==、=、Arrays.fill)。boolean
Boolean[]
每个布尔值使用大约 4-20 个字节。boolean[]
每个布尔值使用大约 1 个字节。BitSet
每个布尔值使用大约 1 位。内存大小对您来说可能不是问题,在这种情况下,布尔值[]可能更易于编码。
从一些基准测试与Sun JDK 1.6计算素数与筛子(最好的10次迭代预热,给JIT编译器一个机会,并排除随机调度延迟,Core 2 Duo T5600 1.83GHz):
BitSet 比布尔 [] 的内存效率更高,除了非常小的尺寸。数组中的每个布尔值都带有一个字节。来自 runtime.freeMemory() 的数字对于 BitSet 来说有点混乱,但更少。
布尔值[]的CPU效率更高,除了非常大的尺寸,它们大致相等。例如,对于大小100万,布尔值[]大约快四倍(例如6ms与27ms),对于1000万和1000万,它们大约是均匀的。