解码整数序列的最快方法

时间:2013-02-08 19:54:21

标签: java io memory-mapped-files

假设以下文件格式:

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.

1 个答案:

答案 0 :(得分:2)

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

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