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

在Scala中使用并行集合的首选方法是什么?

发布时间:2020-12-16 18:15:08 所属栏目:安全 来源:网络整理
导读:起初我假设每个集合类都会收到一个额外的par方法,它将集合转换为适合的并行数据结构(如map返回 Scala 2.8中元素类型的最佳集合). 现在似乎一些集合类支持par方法(例如Array),但是其他集合类必须支持ParSeq,toParIterable方法(例如List).这有点奇怪,因为经常
起初我假设每个集合类都会收到一个额外的par方法,它将集合转换为适合的并行数据结构(如map返回 Scala 2.8中元素类型的最佳集合).

现在似乎一些集合类支持par方法(例如Array),但是其他集合类必须支持ParSeq,toParIterable方法(例如List).这有点奇怪,因为经常不使用或推荐Array.

这是什么原因?在所有正在做“正确的事情”的集合类中,只提供一个标准杆并不是更好吗?

如果我有可能并行处理的数据,我应该使用哪些类型? scala.collection中的特征或直接实现的类型?

或者我现在应该更喜欢Arrays,因为它们似乎更便宜并行化?

解决方法

列表不太适合并行处理.原因是要到达列表的末尾,您必须遍历每个元素.因此,您也可以将列表视为迭代器,因此也可以使用像toParIterable这样更通用的东西.

任何具有快速索引的集合都是并行处理的良好候选者.这包括实现LinearSeqOptimized的任何内容,以及树和哈希表.数组具有尽可能快的索引,因此它是一个相当自然的选择.你也可以使用像ArrayBuffer这样的东西(它有一个返回ParArray的par方法).

(编辑:李大同)

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

    推荐文章
      热点阅读