Summary: This short post shows a few examples of using parallel collections in Scala.
To be clear, these examples of using Scala parallel collections aren’t my own examples, they come from this page on the scala-lang.org website. But, for the completeness of my Scala cookbook recipes, I wanted to make sure I included a reference to parallel collections here. (I do have other examples of using parallel collections in Scala on this site.)
First, here’s an example of converting a normal Scala List
to a parallel list (technically a ParSeq
) so you can then run a parallel map
method to transform a collection of String
objects to all-uppercase strings:
scala> val lastNames = List("Smith","Jones","Frankenstein","Bach","Jackson","Rodin").par lastNames: scala.collection.parallel.immutable.ParSeq[String] = ParVector(Smith, Jones, Frankenstein, Bach, Jackson, Rodin) scala> lastNames.map(_.toUpperCase) res0: scala.collection.parallel.immutable.ParSeq[String] = ParVector(SMITH, JONES, FRANKENSTEIN, BACH, JACKSON, RODIN)
And here’s a second example of how to convert a map
operation on a List
from the usual approach:
val list = (1 to 10000).toList list.map(_ + 42)
to using the map
method on a parallel collection by again invoking .par
, this time without creating the explicit intermediate reference (as was done with lastNames
in the previous example):
list.par.map(_ + 42)
Again, these Scala parallel programming examples come from this page on the official Scala website. I’ll add my own examples here in time, but until I get a chance to write those, I wanted to make sure that people who are using my Scala cookbook as a reference had a link to a great parallel programming resource.
Also, here’s a link to a great Measuring Performance article on the official Scala website.