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.