使用X.par.view和X.view.par构建Scala并行视图?

Dan*_*ler 8 parallel-processing scala scala-collections parallel-collections

根据关于并行收集和在互联网上搜索的论文,并行集合应该与视图一起工作,但我不清楚它们之间的区别

coll.par.view.someChainedIterations
Run Code Online (Sandbox Code Playgroud)

coll.view.par.someChainedIterations
Run Code Online (Sandbox Code Playgroud)

似乎coll.view.par放弃了集合的视图:

scala> val coll = 1 to 3
coll: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3)

scala> coll.view.par
res2: scala.collection.parallel.ParSeq[Int] = ParArray(1, 2, 3)

scala> coll.par.view
res3: java.lang.Object with scala.collection.parallel.ParSeqView[Int,scala.collection.parallel.immutable.ParSeq[Int],scala.collection.immutable.Seq[Int]] = $anon$1(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

但我不知道为什么.它是一个功能还是一个bug?

axe*_*l22 4

这可能是一个疏忽,应该修复。

on顺序视图可以通过调用集合上par的 来实现,这将导致递归调用链,直到是最初从中获取视图的严格集合。如果这个集合可以有效地转换成其对应的并行集合,则可以有效地构造新获得的并行视图(参见此处)。parunderlyingparunderlying