Java中读取和写入整数的有效方法

Java中读取和写入整数的有效方法,java,performance,io,Java,Performance,Io,我需要处理一个无法放入内存的大文件。 我的代码涉及大量的读写操作,而我的文件只包含整数。 现在我正在使用 DataInputStream in = new DataInputStream(new BufferedInputStream( new FileInputStream(inPath))); int i = in.readInt(); 及 用于读取和写入整数 然而,不断地阅读和写作会导致非常糟糕的表现。分析代码之后,我发现大部分时间都花在readInt()和wri

我需要处理一个无法放入内存的大文件。 我的代码涉及大量的读写操作,而我的文件只包含整数。 现在我正在使用

DataInputStream in = new DataInputStream(new BufferedInputStream(
            new FileInputStream(inPath)));
int i = in.readInt();

用于读取和写入整数


然而,不断地阅读和写作会导致非常糟糕的表现。分析代码之后,我发现大部分时间都花在
readInt()
writeInt()
上。如何提高读取和写入整数的性能?

在处理大量数据时,文件IO通常是性能的关键瓶颈

克服这一问题的选择空间相当大:

  • 当使用一台机器时,您可以将数据分布在多个磁盘上,这样IO通信就不会因为所有发送到单个设备的请求而停止
  • 显然:更快的磁盘硬件(SSD或NVMe)
  • 横向扩展:不仅多个磁盘,而且多个计算节点
  • 开放更多的维度,如:网络文件系统,或特别为处理大数据而优化的文件系统

这些想法很普通,但你的问题也是。不要期待完美的解决方案,因为“完美”的解决方案是通过仔细设计一个能够满足您需要的总体架构来创建的,然后对该设置中的所有相关设置进行更仔细的调整

尝试一个
BufferedDataInputStream
。internet上有许多工具,例如

DataOutputStream out = new DataOutputStream(new BufferedOutputStream(
            new FileOutputStream(outPath)));
dos.writeInt(i);