2

对于我正在进行的一个项目,我试图尽快计算文本文件中的元音。为了做到这一点,我正在尝试一种并发方法。我想知道是否可以同时读取文本文件以加快计数?我相信瓶颈是 I/O,因为现在我正在通过缓冲读取器读取文件并逐行处理,所以我想知道是否可以一次读取文件的多个部分。

我最初的想法是使用 拆分文件 - Java/Linux

但显然 MappedByteBuffers 在性能方面并不是很好,一旦我拆分,我仍然需要从每个 MappedByteBuffer 中逐行读取。

另一种选择是在阅读一定数量的行后拆分,但这违背了目的。

将不胜感激任何帮助。

4

1 回答 1

0

以下内容不会拆分文件 - 但可以帮助同时处理它!

在 Java 8 中使用 Streams,您可以执行以下操作:

Stream<String> lines = Files.lines(Paths.get(filename));
lines.filter(StringUtils::isNotEmpty) // ignore empty lines

如果你想并行运行,你可以这样做:

lines.parallel().filter(StringUtils::isNotEmpty) 

在上面的例子中,我过滤了空行——当然你可以通过实现你自己的方法并调用它来修改它以适应你的使用(计算元音)。

于 2015-06-01T21:32:03.537 回答