【问题标题】:Java Program Architecture: IO BufferJava 程序架构:IO 缓冲区
【发布时间】:2021-08-04 06:20:20
【问题描述】:

我是 Java 新手,编写了一个很难更新的程序,因为业务逻辑、模态和 repo 数据组合在类中。从那以后,我研究了许多教程,但我找不到确保我的程序以最节省资源的方式编写的答案。

程序通过 BufferedReader 类导入 CSV 的 1 行,并创建一个模态对象实例来反映读取的每一列。然而,随后通过 BufferedReader 读取第二个 CSV 表以检查第一个 CSV 中的任何数据是否匹配,然后使用此新信息更新模态对象。

然后一旦更新的模态对象被更新,更新的模态对象被添加到一个ArrayList中。

哪种架构方式更高效,版本 1 或版本 2 以及原因:

版本 1

  1. 阅读线
  2. 创建对象实例
  3. 阅读线
  4. 更新对象实例(和运行逻辑)
  5. 通过 BUFFEREDWRITER 将行(对象)写入新文件
  6. 重复 3000 次

第 2 版

  1. 阅读线
  2. 添加到阵列列表 A
  3. 阅读线
  4. 添加到阵列 B
  5. 通过比较数组 A 和 B 来运行逻辑
  6. 通过缓冲读取器将最终数组写入新文件

请注意,虽然目前使用的是行数有限的 CSV 数据(3000 行),但未来 CSV 行将增加到超过 50,000 行数据,所以最好添加到 ArrayLists 并运行逻辑完整的ArrayList,还是先在每个对象上运行逻辑,然后将编译好的对象添加到ArrayList?

【问题讨论】:

    标签: java arraylist architecture


    【解决方案1】:

    第 2 版效率更高,因为您是在批处理操作,并且不会重复昂贵的任务。一个典型的例子是数据库连接——建立一个数据库连接通常很昂贵,所以打开一个连接并通过它进行 100 次更新总是比打开连接、进行更新、关闭连接 x 100 更有效(对于调用者)。

    与该示例的权衡是数据库只能保存有限数量的连接,因此通过一个连接执行 100 次更新对调用者来说效率更高,但可能会阻止其他调用者访问数据库。

    使用缓冲区是另一种“昂贵”的操作,这就是版本 1 慢得多的原因,因为您要设置它 300 (50,000) 次而不是一次。

    【讨论】:

      猜你喜欢
      • 2014-09-12
      • 2022-12-01
      • 1970-01-01
      • 2015-04-24
      • 2010-11-29
      • 1970-01-01
      • 1970-01-01
      • 2013-12-01
      相关资源
      最近更新 更多