8

Zgodnie z papieru na równoległych zbiorów i szukając w internecie, zbiory równoległe mają pracować z widokami, ale nie jestem jasne na różnicy międzyKonstruowanie równoległych widoków Scala za pomocą X.par.view vs X.view.par?

coll.par.view.someChainedIterations 

i

coll.view.par.someChainedIterations 

To wydaje jak coll.view.par traci viewness kolekcji:

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) 

ale nie wiem dlaczego. Czy to jest funkcja czy błąd?

Odpowiedz

4

Jest to prawdopodobnie niedopatrzenie i powinno zostać naprawione.

The par na kolejnych widoków mogą być realizowane poprzez wywołanie par sprawie zbierania underlying, który powodowałby łańcucha wywołań rekurencyjnych parunderlying ścisły zbiór że widok był pierwotnie uzyskane od. Jeśli kolekcja ta może zostać efektywnie przekształcona w odpowiadające jej kolekcje równoległe, wówczas nowo wygenerowany widok równoległy może zostać skonstruowany wydajnie (patrz: here).