对于我正在处理的项目,我正在尝试尽可能快地计算文本文件中的元音。为了做到这一点,我正在尝试一种并发的方法。我想知道是否可以同时读取文本文件作为加速计数的方法?我认为瓶颈是I / O,从现在开始我通过缓冲读取器读取文件并逐行处理,我想知道是否可以一次读取文件的多个部分。
我最初的想法是使用 Split File - Java/Linux
但显然MappedByteBuffers的性能并不是很好,而且一旦我拆分,我仍然需要逐行读取每个MappedByteBuffer。
另一种选择是在读取一定数量的线后进行分割,但这会破坏目的。
感谢任何帮助。
答案 0 :(得分:0)
以下内容不会拆分文件 - 但可以帮助同时处理它!
在Java 8中使用Streams,您可以执行以下操作:
Stream<String> lines = Files.lines(Paths.get(filename));
lines.filter(StringUtils::isNotEmpty) // ignore empty lines
如果你想并行运行,你可以这样做:
lines.parallel().filter(StringUtils::isNotEmpty)
在上面的示例中,我过滤了空行 - 但当然您可以通过实现自己的方法并调用它来将其修改为您的使用(计算元音)。