我有 8 个文件。它们中的每一个大约为 1.7 GB。我正在将这些文件读入字节数组,并且该操作足够快。
然后按如下方式读取每个文件:
BufferedReader br=new BufferedReader(new InputStreamReader(new ByteArrayInputStream(data)));
当使用单核按顺序处理时,大约需要 60 秒才能完成。但是,当将计算分布在 8 个独立的内核上时,每个文件需要的时间远远超过 60 秒。
由于数据都在内存中并且没有执行任何 IO 操作,我假设每个内核处理一个文件应该不超过 60 秒。因此,总共 8 个文件应该在 60 多秒内完成,但事实并非如此。
我是否缺少有关 BufferedReader 行为的信息?或上述代码中使用的任何阅读器。
值得一提的是,我首先使用此代码上传文件:
byte[] content=org.apache.commons.io.FileUtils.readFileToByteArray(new File(filePath));
整个代码如下所示:
For each file
read the file into a byte[]
add the byte[] to a list
end For
For each item in the list
create a thread and pass a byte[] to it
end For