Нет параллельных списков. Вызов par
для List
преобразует List
в параллельную неизменную последовательность по умолчанию - a 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)
Возможно, вы пришли к выводу, что filter
не параллелен, потому что вы измерили время преобразования и filter
время.
Некоторые операции не распараллелены в настоящее время: sort*
варианты, indexOfSlice
.