// PDF: https://moodle.epfl.ch/pluginfile.php/3175938/mod_folder/content/0/week03-4-Scala-Parallel-Collections.pdf?forcedownload=1 // Video: https://mediaspace.epfl.ch/playlist/dedicated/31866/0_2dyv5wql/0_y9b53u6a // Slides: 29 package lecture3 import scala.collection.parallel.CollectionConverters.IterableIsParallelizable import scala.collection.parallel.immutable.ParSet import java.util.concurrent.ConcurrentSkipListSet def intersectionParNoSideEffect(a: ParSet[Int], b: ParSet[Int]) = if a.size < b.size then a.filter(b(_)) else b.filter(a(_)) @main def intersectionNoSideEffect = val a = (0 until 1000).toSet val b = (0 until 1000 by 4).toSet val seqRes = a.intersect(b) val parRes = intersectionParNoSideEffect(a.par.toSet, b.par.toSet) println(s"Sequential result: ${seqRes.size}") println(s"Parallel result: ${parRes.size}")