Rog*_*ach 11 collections parallel-processing scala
看起来当我map在并行列表上调用时,操作并行运行,但是当我filter在该列表上执行时,操作严格按顺序运行.因此,为了使filter并行,我首先映射到(A,布尔),然后过滤那些元组,并再次映射所有元组.感觉不太方便.
所以我感兴趣 - 并行集合上的哪些操作是并行化的,哪些不是?
axe*_*l22 11
没有并行列表.调用par在List转换List成默认的并行不变序列-一个ParVector.该转换顺序进行.无论是filter和map应然后是平行的.
scala> import scala.collection._
import scala.collection._
scala> List(1, 2, 3).par.filter { x => println(Thread.currentThread); x > 0 }
Thread[ForkJoinPool-1-worker-5,5,main]
Thread[ForkJoinPool-1-worker-3,5,main]
Thread[ForkJoinPool-1-worker-0,5,main]
res0: scala.collection.parallel.immutable.ParSeq[Int] = ParVector(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)
也许你已经得出结论,这filter是不平行的,因为你已经测量了转换时间和filter时间.
目前尚未并行化的一些操作:sort*变体,indexOfSlice.
| 归档时间: |
|
| 查看次数: |
1220 次 |
| 最近记录: |