3 回答

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊
從一些帶有Sun JDK 1.6計(jì)算質(zhì)數(shù)的基準(zhǔn)測試中篩選(最好進(jìn)行10次迭代以進(jìn)行預(yù)熱,給JIT編譯器一個(gè)機(jī)會(huì),并排除隨機(jī)調(diào)度延遲,Core 2 Duo T5600 1.83GHz):
除了非常小的大小,BitSet比boolean []更有效的存儲(chǔ)。數(shù)組中的每個(gè)布爾值都占用一個(gè)字節(jié)。對(duì)于BitSet,runtime.freeMemory()中的數(shù)字有些混亂,但更少。
boolean []的CPU效率更高,除了非常大的大?。ù蠹s相等)之外。例如,對(duì)于大小為100萬的boolean [],大約要快四倍(例如6ms對(duì)27ms),而對(duì)于一億個(gè),它們大約是偶數(shù)。

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊
Boolean[]
每個(gè)布爾值使用大約4-20個(gè)字節(jié)。boolean[]
每個(gè)布爾值使用大約1個(gè)字節(jié)。BitSet
每個(gè)布爾值使用大約1位。
對(duì)于您來說,內(nèi)存大小可能不是問題,在這種情況下,boolean []可能更易于編寫代碼。

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊
您的問題有些遺漏,但是如果您擔(dān)心存儲(chǔ)問題,則可以考慮使用Huffman壓縮技術(shù)。例如,00000001可以按頻率壓縮到等于{(7)0, (1)1}。更加“隨機(jī)化”的字符串00111010將需要更復(fù)雜的表示形式,例如{(2)0, (3)1, (1)0, (1)1, (1)0},并占用更多空間。根據(jù)您的位數(shù)據(jù)的結(jié)構(gòu),您可能會(huì)從中獲得一些存儲(chǔ)方面的好處BitSet。
添加回答
舉報(bào)