Java的:并行过滤较大的文本文件,而维持秩序

问题描述 投票:1回答:1

假设我有一个SSD非常大的文件,以及48个内核。我要过滤的文本文件(基于行的文本文件),只留有一定的句子。然后,我想写所过滤的内容到一个新的文件,在保持原有顺序。

我认为Java的并行数据流不会维持秩序。

我脑子里想的是这样的:创造的48分是平均分配的文件,然后调整指针在新的生产线开始,然后创建48个线程每个进程不同的块和过滤线(并将结果保存在内存中 - 结果比原始文件小得多),然后坐48件,并将它们写入到一个文件,一个接一个。

这是正确的做法,是有一个Java框架呢,还是应该从头开始写的?

java text parallel-processing stream
1个回答
0
投票

在这个特定背景下的多线程环境中工作不会增加你的表演。

你在做重IO操作(读取和写入到磁盘)无法通过不同的线程来完成。

你一定能并行搜索,一旦你加载您的内容,并将其写入磁盘之前,但对于一个普通的文本搜索的速度不能得到真正的提高。

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

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

如果是和微积分不重不花很多时间来尝试,因为IO操作发生在百元的时间比在内存运算慢tousands加快演算阶段是个好主意。


顺便说尝试在以下几个部分来分割的执行时间:

  • 加载在存储器中的文件
  • 搜索短语
  • 结果写入到磁盘

如果第二阶段是真正更快的比别人并行化是不是一个很好的解决方案,但你必须尝试其他解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.