簡體   English   中英

Java MergeSort二進制文件

[英]Java MergeSort Binary files

我有幾個分類的二進制文件,這些文件以某種可變長度格式存儲信息(這意味着這些段之一包含可變長度段的長度)。

我需要將它們合並到一個排序的文件中。 我可以使用BufferedInputStream成功完成此操作。 但是,在機械磁盤上​​需要花費很長時間。 在配備SSD的計算機上,其速度比預期的要快得多。

令我困擾的是,即使在SSD上,CPU利用率也很低,這讓我懷疑是否有提高速度的方法。 我認為發生這種情況是因為大多數時候CPU等待磁盤。 我試圖將緩沖區增加到數百MB,無濟於事。

我試圖使用MemoryMapped緩沖區和文件通道,但是並沒有改善運行時間。

有任何想法嗎?

編輯:使用MemoryMappedByteBuffer失敗,因為合並的文件大小超過2 GB,這是MemoryMappedByteBuffer的大小限制。 但是,即使在將較小的文件合並為GB文件之前,我也沒有注意到速度或CPU利用率的提高。

謝謝

也許您可以更好地壓縮文件,或者這不是一種選擇嗎? 如果瓶頸是I / O,則減少數量是一個不錯的選擇。 http://www.oracle.com/technetwork/articles/java/compress-1565076.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM