Ответ 1
Нет параллельных списков. Вызов 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
.