用Java读写整数的有效方法

时间:2019-04-13 18:00:30

标签: java performance io

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

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

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

用于读写整数。

但是,必须不断地进行读写操作会导致性能下降。对代码进行性能分析后,我发现大部分时间都花在readInt()writeInt()上。如何提高读写整数的性能?

2 个答案:

答案 0 :(得分:0)

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

用于解决该问题的选项空间非常广泛:

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

这些想法很笼统,但您的问题也是如此。不要指望完美的解决方案,因为“完美”的解决方案是通过仔细设计能够满足您需要的总体体系结构而创建的,然后再仔细调整该设置中的所有相关设置。

答案 1 :(得分:-1)