繁体   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