[英]Java data storage optimization options
我一直在考慮用Java優化我最新的兩種數據存儲技術,並且想知道哪種內存效率最高 。 以下是這兩個類的描述。 為了便於論證,假設它們具有與數據接口相同的方法,允許用戶通過以下方法單獨或按范圍獲取或設置任何位的狀態:
public boolean getBitState(byte bitIndex)
bitIndex
處的位狀態 public Clazz setBitState(byte bitIndex, boolean newState)
bitIndex
處的位狀態設置為newState
並返回結果對象 public int getStateOfBits(byte startIndex, byte endIndex)
startIndex
和endIndex
之間所有位的狀態為int
public Clazz setStateOfBits(byte startIndex, byte endIndex, int newState)
startIndex
和endIndex
之間的所有位的狀態設置為newState
提供的值。 newState
的位數少於fit,則通過在左側添加零來使其適合 newState
位數多於fit,則會裁剪多余的位(在左側) 這些是我使用此接口所做的類:
該類使用int
作為通過按位函數存儲32位數據的方法。
該類使用32個boolean
的數組作為通過標准數組交互存儲32位數據的方式。
使用int
和按位函數! 大多數JVM將boolean
數組表示為字節數組。 java.util.BitSet
內部使用long數組來表示它的位(64塊)。
您是否考慮過使用BitSet
類 ? 看起來它可以完成您需要做的所有事情,並且可能在記憶方面得到很好的優化。
考慮到你的兩個選擇,絕對不是一系列布爾。 布爾數組需要額外的內存空間用於與數據類型關聯的元數據。 此外,大多數JVM將為每個布爾值分配32位內存。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.