5

起初,我假设每个集合类都会收到一个附加par方法,该方法会将集合转换为合适的并行数据结构(例如map返回 Scala 2.8 中元素类型的最佳集合)。

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

这是什么原因?par在所有集合类上都有一个可用的做“正确的事情”不是更好吗?

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

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

4

1 回答 1

5

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

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

于 2010-12-19T00:29:03.233 回答