根据to the official docs有两种创建并行集合的选项:
1)
// There's a little bug here, doesn't matter for the sake of the question
import scala.collection.parallel.mutable.ParArray
val pv = new ParVector[Int]
2)
val pv = Vector(1,2,3,4,5,6,7,8,9).par
现在,有什么区别?当我从简单的顺序集合转换它时,是否存在任何性能损失?
如果您必须创建一个有点并行的集合(例如,数千个元素),您会怎么做?您会从头开始创建它还是转换它?
谢谢大家!
编辑:
正如 @oxbow_lakes 所说,有一篇文档专注于这个主题,但我正在尝试获得“有经验的建议”。我的意思是,例如,如果您必须从数据库中读取一个大集合,您会怎么做。
最佳答案
取决于集合。 Vector
基本上是免费的,ParVector
只是向量的包装。与数组
相同。其他的,例如List
,必须以不同的结构完全复制,更适合并行性。如果您希望结果也是列表,然后复制回新列表。
您可以看看this brand new guide on the scala documentation site ,创建并行集合部分。
关于scala - 与从头开始创建顺序集合相比,将顺序集合转换为并行集合的成本是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10004615/