-1

假设以下文件格式:

Integer1 Integer2 Integer3 Integer4 ...

这些是使用 DataInputStream 编写的二进制整数。有 220 亿个它们写入一个大小约为 90G 的文件。

可用 RAM > 2 * 文件大小。

因此,它可以轻松放入内存中。读取和解码此类整数的最快方法是什么。目前,

MappedByteBuffer reads 500M numbers in time: 212.986 seconds
DataInputStream wrapped around a BufferedInputStream reads 500M numbers in time 306.755 seconds.
4

1 回答 1

2

答案取决于 JVM、操作系统、硬件和访问模式的确切组合。Martin Thompson 编写了一个程序,可用于测试各种读写方式的顺序 I/O 性能:http: //mechanical-sympathy.blogspot.com/2011/12/java-sequential-io-performance.html

他在他的平台上的测试结论:使用 RandomAccessFile。

于 2013-02-08T21:07:22.207 回答