我想讀一個大的文本文件,大約幾個GB,並對其進行處理,而無需裝載它的整個文件,而是裝載塊的塊。(處理涉及計字實例)使用NIO VS RandomAccessFile的讀取文件
如果我使用併發哈希映射並行處理文件以提高效率,有沒有辦法使用NIO或隨機訪問文件以塊的形式讀取它?它會使它更有效率嗎?
當前實現使用緩衝的讀者是這樣的:
while(lines.size() <= numberOfLines && (line = bufferedReader.readLine()) != null) {
lines.add(line);
}
lines.parallelStream().. // processing logic using ConcurrentHashMap
下定決心。這是什麼? NIO?或者'RandomAccessFile'?無論如何,你可以用'BufferedReader'讀取每秒數百萬行。 NIO不會比使用NIO快20%,而使用RandomAccessFile會使速度減慢*,因爲沒有緩衝:多線程可能會導致更糟或者根本不做任何事情,因爲磁盤不是多線程的。你真的需要這樣做嗎? – EJP
我正在考慮更多的性能調整。那麼當前的實施更有效率? – Maddy
我會考慮*少*性能的調整。只需逐行處理文件,並忘記分塊和並行流式傳輸。在我看來,我已經回答了你的最後一個問題。我當然試過。 – EJP