Java 解码整数序列的最快方法
采用以下文件格式:Java 解码整数序列的最快方法,java,io,memory-mapped-files,Java,Io,Memory Mapped Files,采用以下文件格式: Integer1 Integer2 Integer3 Integer4 ... 这些是使用DataInputStream编写的二进制整数。其中有220亿条被写入一个大小约为90G的文件中 可用RAM大于文件大小的2* 因此,它可以很容易地放入内存中。读取和解码这些整数的最快方法是什么。目前, MappedByteBuffer reads 500M numbers in time: 212.986 seconds DataInputStream wrapped around
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.
答案取决于JVM、操作系统、硬件和访问模式的精确组合。Martin Thompson编写了一个程序,可用于测试各种读写方式的顺序I/O性能:
他在平台上的测试结论:使用RandomAccessFile。Java的
Integer
s是4个字节(加上包装的开销…),220亿~>81GB。你说的是什么样的系统,你认为它适合RAM?显然,您正在尝试使用缓冲区,这应该会有所帮助。这里的目标是什么?你想完成什么任务?考虑到您当前的速度,预计处理最多需要9个小时。。。