在内存和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),而对于一亿个,它们大约是偶数。
扬帆大鱼
TA贡献1799条经验 获得超9个赞
Boolean[]
每个布尔值使用大约4-20个字节。boolean[]
每个布尔值使用大约1个字节。BitSet
每个布尔值使用大约1位。
对于您来说,内存大小可能不是问题,在这种情况下,boolean []可能更易于编写代码。
拉莫斯之舞
TA贡献1820条经验 获得超10个赞
您的问题有些遗漏,但是如果您担心存储问题,则可以考虑使用Huffman压缩技术。例如,00000001可以按频率压缩到等于{(7)0, (1)1}。更加“随机化”的字符串00111010将需要更复杂的表示形式,例如{(2)0, (3)1, (1)0, (1)1, (1)0},并占用更多空间。根据您的位数据的结构,您可能会从中获得一些存储方面的好处BitSet。
添加回答
举报
0/150
提交
取消