假设以下文件格式:
Integer1 Integer2 Integer3 Integer4 ...
这些是使用DataInputStream编写的二进制整数。它们有22亿个写入大小约为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.
答案 0 :(得分:2)
答案取决于JVM,操作系统,硬件和访问模式的确切组合。 Martin Thompson编写了一个程序,可用于测试各种读写方式的顺序I / O性能:http://mechanical-sympathy.blogspot.com/2011/12/java-sequential-io-performance.html
在他的平台上结束他的测试:使用RandomAccessFile。