【问题标题】:Efficient ways to read and write integers in Java [duplicate]在Java中读写整数的有效方法[重复]
【发布时间】:2019-09-04 05:00:33
【问题描述】:

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

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() 上。如何提高读写整数的性能?

【问题讨论】:

    标签: java performance io


    【解决方案1】:

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

    克服这个问题的选择空间非常广泛:

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

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

    【讨论】:

      【解决方案2】:

      【讨论】:

        猜你喜欢
        • 2011-07-29
        • 1970-01-01
        • 2019-05-03
        • 2010-12-04
        • 2016-04-28
        • 1970-01-01
        • 2013-10-20
        • 1970-01-01
        相关资源
        最近更新 更多