8

根據平行收藏和互聯網上搜索的文件,並行收集應該與意見的工作,但我不是用X.par.view和X.view.par構造Scala並行視圖?

coll.par.view.someChainedIterations 

coll.view.par.someChainedIterations 

看來之間的差別清晰像coll.view.par失去了收藏的viewness:

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) 

,但我不知道爲什麼。它是一個功能還是一個錯誤?

回答

4

這可能是一個疏忽,應該修復。

上連續視圖的par可能會通過underlying集合,這將導致遞歸par調用鏈,直到underlying是,鑑於最初是從得到嚴格的收集調用par實現。如果可以將該集合有效地轉換爲相應的並行集合,則可以高效地構建新獲得的並行視圖(請參見here)。