gpt4 book ai didi

java - java中使用多线程解析xml并写入txt文件

转载 作者:行者123 更新时间:2023-12-01 20:08:08 25 4
gpt4 key购买 nike

我有很多 xml 文件。每个 xml 文件都包含太多行和标签。这里我必须解析它们并用 xml 的文件名写入 .txt 文件。这需要尽快完成。越快越好。

xml 文件示例:

<text>
<paragraph>
<line>
<character>g</character>
<character>o</character>
.....
</line>
<line>
<character>k</character>
.....
</line>
</paragraph>
</text>
<text>
<paragraph>
<line>
<character>c</character>
.....
</line>
</paragraph>
</text>

文本文件示例:

go..
k..

c..

如何尽可能快地使用 java 中的多线程解析多个 xml 文件并写入多个文本文件?

我应该从哪里开始解决问题?我用来解析的方法会影响速度吗?如果有影响,哪种方法比其他方法更快?

我没有多线程经验。我应该如何构建一个有效的多线程结构?

感谢任何帮助。提前致谢。

编辑

我需要一些帮助。我使用SAX进行解析。我对线程池、多线程、java8 特性做了一些研究。我尝试了一些代码块,但总时间没有变化。如何在我的代码中添加多线程结构或 java8 功能(Lambda 表达式、并行性等)?

最佳答案

这种情况下需要注意的事项。

  1. 在许多情况下,尝试使用多线程同时写入多个文件是完全没有意义的。所有这些通常都会使磁盘磁头过度使用。
  2. 在解析时写入磁盘也可能是一个瓶颈。您最好将 xml 解析到缓冲区中,然后一次将整个缓冲区写入磁盘。
  3. 解析器的速度不太可能显着影响整个过程的时间。您的系统几乎肯定会花费更多的时间来读取和写入而不是解析。
  4. 快速检查一些真实的测试数据将非常有值(value)。尝试准确估计您将无法影响的时间。
    • 通过将几千个样本文件读入内存来确定大约的总读取时间,因为无论您如何并行处理该过程,仍然需要花费该时间。
    • 以类似的方式估计大约总写入时间
    • 将两者相加,并将其与读取、解析和写入相同文件的总执行时间进行比较。这应该能让您清楚地了解通过并行性可以节省多少时间。

并行并不总是解决运行缓慢的进程的问题。只需使用适当的硬件,您通常就可以显着提高吞吐量。

关于java - java中使用多线程解析xml并写入txt文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47097337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com