[問題] 如何用串流傳遞資料
我最近做一個Class 可以分析巨大文字檔裡面的資料。50M bytes
會遇到memory out Exception
步驟如下
A function
1. 用BufferedReader串InputStreamReader讀取檔案
2. 初步分析資料
3. 存入ArrayList
4. 回傳ArrayList
B function
1. 取出ArrayList
2. 切割資料
3. 存入HashMap,順便統計資料重複的次數
C function
1. 分析hashMap,找出重複的次數太少,砍除垃圾的資訊
2. 回傳hashMap
D fuction
1. 取出HashMap,存檔
因為在 B function 步驟3,吃掉太多記憶體,就memory out Exception
我的想法是把 ABCD function 串在一起
D(C(B(A(in))))
就像
BufferedReader br = new BufferedReader(
new InputStreamReader(new FileInputStream(FileName),CharSet ));
每個function 之間都用Stream 串連 ,不要用Collection 作暫存
不要用Memory 做暫存
請問要如何達成呢?
謝謝大家
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.175.188
推
12/07 11:40, , 1F
12/07 11:40, 1F
推
12/07 14:46, , 2F
12/07 14:46, 2F
謝謝樓上
sqlite很好用,但是會很慢,
用Memory 做暫存,搜尋時間是0.01 ms為單位
用sqliten搜尋時間會是0.1s為單位,以上是粗估略不會很精準。
該程式為最後分析結果的有效資料是1百萬筆,
中間的暫存資料可能是有效資料的五倍以上,用db 可能會非常慢,
謝謝大家
※ 編輯: pttnews 來自: 59.120.175.188 (12/07 15:12)
推
12/07 17:00, , 3F
12/07 17:00, 3F
→
12/07 17:02, , 4F
12/07 17:02, 4F
→
12/07 17:04, , 5F
12/07 17:04, 5F
推
12/07 17:15, , 6F
12/07 17:15, 6F
→
12/08 08:52, , 7F
12/08 08:52, 7F
→
12/08 08:53, , 8F
12/08 08:53, 8F
推
12/08 09:14, , 9F
12/08 09:14, 9F