在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方法). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |