Re: [分享] java nio performance tuning
我實際重製測試的結果, 時間上只有些許不同
當Stragtegy 2使用Buffer後, 時間可以縮短非常多
不過 NIO 仍然是最快的
Strategy 1
你的tsv格式(有分隔字元) 讀取時間 14.399 秒
我的tsv格式(無分隔字元) 讀取時間 9.688 秒
補充: 不包括整數轉換 讀取時間 4.353 秒
Strategy 2
無Buffer 讀取時間 307.041 秒
有Buffer 讀取時間 2.075 秒
Strategy 3
讀取時間 0.327 秒
看來 NIO 確實挺可怕的 XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.24.13.31
→
10/04 10:21, , 1F
10/04 10:21, 1F
→
10/04 10:43, , 2F
10/04 10:43, 2F
推
10/04 11:28, , 3F
10/04 11:28, 3F
→
10/04 11:28, , 4F
10/04 11:28, 4F
→
10/04 11:56, , 5F
10/04 11:56, 5F
→
10/04 11:58, , 6F
10/04 11:58, 6F
→
10/04 12:00, , 7F
10/04 12:00, 7F
嗯, 懂你的意思. Strategy 1是將文字轉整數,會花些時間
補上 去除整數轉換的數據
Strategy 2 是沒有整數轉換的, 和Strategy 3一樣, 都是直接取出成為int
※ 編輯: AI3767 來自: 111.248.52.147 (10/04 20:14)
→
10/04 21:00, , 8F
10/04 21:00, 8F
→
10/04 21:02, , 9F
10/04 21:02, 9F
→
10/04 21:03, , 10F
10/04 21:03, 10F
readInt()這個我比較傾向認為是還原, 而不是轉換
不過, 為了慎重, 也再做了其它試驗, strategy 2和3 改為read byte 的方式
甚至連assignment也沒有了, 出來的數據如下
S2: 1.966 秒; S3: 0.344秒 (修正, 原本0.14 秒是忘了加上迴圈)
至於cache的問題, 我比較不擔心, 因為測試是跑個幾次, 結果也是沒變
還有交叉執行, 以釐清是否有執行順序的因素存在
另外, buffer的大小部份, 我改用資料筆數為大小, 取得最好的緩衝能力
結論都是一樣的 XD
※ 編輯: AI3767 來自: 111.248.52.147 (10/04 23:13)
→
10/04 23:33, , 11F
10/04 23:33, 11F
→
10/04 23:46, , 12F
10/04 23:46, 12F
→
10/04 23:48, , 13F
10/04 23:48, 13F
原本code是用 bb.asIntBuffer() 去取 int值
改成 迴圈並由 bb.get() 取byte值
補充: 前個 S3 讀byte的數據有誤, 必須加上迴圈讀取, 抱歉 0rz
※ 編輯: AI3767 來自: 111.248.52.147 (10/05 00:44)
→
10/05 01:11, , 14F
10/05 01:11, 14F
沒有耶 就"bb.get();" 連assignment都沒有
不過在正式跑 ip.bin 檔前, 有先用小檔確認取得的資料是對的, 才去正式跑
※ 編輯: AI3767 來自: 114.24.15.26 (10/05 19:45)
→
10/05 20:43, , 15F
10/05 20:43, 15F
→
10/05 20:59, , 16F
10/05 20:59, 16F
→
10/05 21:33, , 17F
10/05 21:33, 17F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 3 之 6 篇):
java 近期熱門文章
PTT數位生活區 即時熱門文章