[問題] 存大筆資料時(存0,1,2),資料型態選擇

看板java作者 (小桑)時間14年前 (2012/01/28 20:24), 編輯推噓4(4010)
留言14則, 8人參與, 最新討論串1/2 (看更多)
各位前輩好~ 小弟的目的是要降低對I/O頻繁的讀取負擔, 所以把檔案中存的資料全部讀進記憶體以備讀取, 讀進來後會有 (1024*1024) x 190 = 199229440筆資料, 打算以陣列來儲存,而每一筆資料內存的是 0或1或2 , 若使用boolean陣列則不足以表示0或1或2, 若使用short陣列的話,則該陣列大小也有380MB, 請問這樣的話是否能有把資料讀進記憶體時更節省記憶體空間、 在讀取時又好處理的方法呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.56.149

01/28 20:53, , 1F
硬要塞進記憶體的話,想到兩個方法笨方法是宣告布林陣列
01/28 20:53, 1F

01/28 20:56, , 2F
然後自己判斷false=0 true=1 null=2這樣...
01/28 20:56, 2F

01/28 21:01, , 3F
用 short array + 3進位 ?
01/28 21:01, 3F

01/28 21:03, , 4F
不然至少還有 byte array 可以用
01/28 21:03, 4F

01/28 23:31, , 5F
大概像這樣吧,沒仔細測 http://pastie.org/3270287
01/28 23:31, 5F

01/28 23:34, , 6F
有現成的 BitSet
01/28 23:34, 6F

01/29 00:59, , 7F
BitSet啊.... 知道了個好東西呢
01/29 00:59, 7F

01/29 06:09, , 8F
有進就有出..看看你的輸出的需求..如果沒有急迫性..
01/29 06:09, 8F

01/29 06:13, , 9F
分段讀出去~~
01/29 06:13, 9F

01/29 09:53, , 10F
囧... 還真的什麼 class 都有 XD
01/29 09:53, 10F

01/29 13:01, , 11F
BitSet只能存0,1吧?原PO的需求應該要客製化資料結構
01/29 13:01, 11F

01/29 13:15, , 12F
不過我比較好奇甚麼需求要用三元狀態? 未來有可能變更多嗎?
01/29 13:15, 12F

02/16 02:49, , 13F
謝謝各位前輩的建議,現在需求改成只要0或1,可以用布林了
02/16 02:49, 13F

02/16 02:52, , 14F
之前的需求是需要存測試結果,有1有0,也有隨機0或1的結果
02/16 02:52, 14F
文章代碼(AID): #1F8-a1-t (java)
文章代碼(AID): #1F8-a1-t (java)