Java程序架构:IO缓冲区

Java Program Architecture: IO Buffer

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

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

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

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

版本 1

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

版本 2

  1. 读行
  2. 添加到数组列表 A
  3. 读行
  4. 添加到数组列表 B
  5. 运行 比较数组列表 A 和 B 的逻辑
  6. 通过 BUFFEREDREADER 将最终数组列表写入新文件

请注意,虽然目前使用的 CSV 数据行数有限(3000 行),但将来 CSV 行将增加到超过 50,000 行数据,因此最好添加到 ArrayLists 和 运行逻辑在完整的ArrayList上,或者先在每个对象上运行逻辑,然后将complated对象添加到ArrayList?

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

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

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