Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 解码整数序列的最快方法_Java_Io_Memory Mapped Files - Fatal编程技术网

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个小时。。。