加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何在scala中有效地同时处理300个文件

发布时间:2020-12-16 18:19:26 所属栏目:安全 来源:网络整理
导读:我将使用 Scala比较大约300个二进制文件,逐个字节,每个4MB.但是,根据我已经完成的工作,使用java.BufferedInputStream同时处理15个文件在我的机器上花了大约90秒,所以我认为我的解决方案在大量文件方面不会很好. 我们非常感谢您的意见和建议. 编辑:实际任务
我将使用 Scala比较大约300个二进制文件,逐个字节,每个4MB.但是,根据我已经完成的工作,使用java.BufferedInputStream同时处理15个文件在我的机器上花了大约90秒,所以我认为我的解决方案在大量文件方面不会很好.

我们非常感谢您的意见和建议.

编辑:实际任务不只是比较差异,而是以相同的顺序处理这些文件.假设我必须同时查看每个文件中的字节ith,然后继续(第1步).

解决方法

事实上,你很沮丧.

让我们看看… 300 * 4 MB = 1.2 GB.这适合你的记忆预算吗?如果是这样,请务必将它们全部读入内存.但是,为了加快速度,您可以尝试以下方法:

>按顺序读取每个文件的512 KB.您可以尝试同时从2到8阅读 – 也许通过期货,并看看它有多好.根据您的I / O系统,您可以通过同时读取几个文件来获得一些速度,但我不希望它扩展太多.实验! BENCHMARK!
>使用Futures处理512 KB.
>返回步骤1,除非您已完成文件.
>从处理期货中获取结果.

在步骤1中,通过限制并行读取,可以避免丢弃I / O子系统.尽可能多地推动它,可能比它少一点,但绝对不会超过它.

通过不读取步骤1中的所有文件,您可以花一些时间阅读这些文件来执行有用的CPU工作.您也可以尝试降低步骤1中读取的字节数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读