[英]Most efficient way to manage large amount of boolean state
我想管理最多10 ^ 18項的布爾狀態(開/關)。 在Java中執行此操作的內存和計算效率最高的方法是什么? 我無法創建這么大的布爾數組,因為數組大小的基本類型是int
,而BitSet
類也是如此。
例如:
long numSwitches = Long.MAX_VALUE;
boolean[] switches = new boolean[numSwitches];
給我一個編譯錯誤: Incompatible types, Reguired: int, Found: long
老實說,如果不使用超級計算機,我認為這樣的事情是不可能的。 10 ^ 18是一個非常大的數字,它實際上相對接近單粒鹽中的原子數! 如果每個原子是1位,那么總內存將高達125 PB(125,000太字節)!
即使您希望通過使用某種流順序訪問位(隨機訪問將要求您將其全部加載到內存中),它仍然需要花費大量時間。
除非一次啟用只有幾位與總量相比(幾十億,這仍然需要幾千兆字節的內存),我不認為有任何合理的解決方法。 但是,考慮一下它仍然非常有趣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.