为了账号安全,请及时绑定邮箱和手机立即绑定

boolean []与BitSet:哪个更有效?

boolean []与BitSet:哪个更有效?

在内存和CPU使用率方面,更有效的方法是booleans或BitSet 数组?不使用特定的BitSet方法,仅使用get / set / clear(分别为数组的==,=,Arrays.fill)。
查看完整描述

3 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

从一些带有Sun JDK 1.6计算质数的基准测试中筛选(最好进行10次迭代以进行预热,给JIT编译器一个机会,并排除随机调度延迟,Core 2 Duo T5600 1.83GHz):

除了非常小的大小,BitSet比boolean []更有效的存储。数组中的每个布尔值都占用一个字节。对于BitSet,runtime.freeMemory()中的数字有些混乱,但更少。

boolean []的CPU效率更高,除了非常大的大小(大约相等)之外。例如,对于大小为100万的boolean [],大约要快四倍(例如6ms对27ms),而对于一亿个,它们大约是偶数。


查看完整回答
反对 回复 2019-10-11
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

  • Boolean[] 每个布尔值使用大约4-20个字节。

  • boolean[] 每个布尔值使用大约1个字节。

  • BitSet 每个布尔值使用大约1位。

对于您来说,内存大小可能不是问题,在这种情况下,boolean []可能更易于编写代码。


查看完整回答
反对 回复 2019-10-11
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

您的问题有些遗漏,但是如果您担心存储问题,则可以考虑使用Huffman压缩技术。例如,00000001可以按频率压缩到等于{(7)0, (1)1}。更加“随机化”的字符串00111010将需要更复杂的表示形式,例如{(2)0, (3)1, (1)0, (1)1, (1)0},并占用更多空间。根据您的位数据的结构,您可能会从中获得一些存储方面的好处BitSet。


查看完整回答
反对 回复 2019-10-11
  • 3 回答
  • 0 关注
  • 726 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信