亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 760 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號