[英]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.