gpt4 book ai didi

Java:并行过滤大文本文件,同时保持顺序

转载 作者:太空宇宙 更新时间:2023-11-04 09:52:31 26 4
gpt4 key购买 nike

假设我的 SSD 上有一个非常大的文件,并且有 48 个核心。我想过滤文本文件(基于行的文本文件),并只留下某些句子。然后我想将过滤后的内容写入一个新文件,同时保持原始顺序。

我认为Java并行流不会保持顺序。

我的想法是这样的:创建 48 个点来均匀地分割文件,然后调整指针以从新行开始,然后创建 48 个线程,每个线程处理不同的 block 并过滤行(并将结果保存在内存中 - 结果比原始文件小得多),然后取出 48 个点并将它们逐个写入一个文件。

这是正确的方法吗?是否有适合它的 Java 框架,还是应该从头开始编写?

最佳答案

在这种特定情况下,在多线程环境中工作不会提高您的性能。

您正在执行繁重的 IO 操作(读取和写入磁盘),而这些操作无法由不同的线程完成。

一旦加载内容并将其写入磁盘之前,您当然可以并行化搜索,但对于普通文本搜索,速度无法真正提高。

在尝试应用复杂的多线程算法之前请考虑:

  • 编码时间取决于IO操作? (网络、磁盘、数据库...)

如果是,并且微积分并不繁重,那么花大量时间尝试加快微积分阶段并不是一个好主意,因为 IO 操作发生的时间比内存操作慢数百或数千。

<小时/>

顺便尝试将执行时间分为以下部分:

  • 将文件加载到内存中
  • 搜索短语
  • 将结果写入磁盘

如果第二阶段确实比其他阶段更快,并行化不是一个好的解决方案,但您必须尝试其他解决方案。

关于Java:并行过滤大文本文件,同时保持顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54535457/

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