diff options
author | Aleksandar Pokopec <aleksandar.prokopec@epfl.ch> | 2010-06-07 10:15:32 +0000 |
---|---|---|
committer | Aleksandar Pokopec <aleksandar.prokopec@epfl.ch> | 2010-06-07 10:15:32 +0000 |
commit | e67f56076624ea83383901934a30280d7f97380f (patch) | |
tree | a28b45d7a79ff9002735ea225b3a4733ac4d0234 /test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ReduceList.scala | |
parent | dd396886d0da88326e5e4772af4d8813360ea8a5 (diff) | |
download | scala-e67f56076624ea83383901934a30280d7f97380f.tar.gz scala-e67f56076624ea83383901934a30280d7f97380f.tar.bz2 scala-e67f56076624ea83383901934a30280d7f97380f.zip |
Adding parallel collections to trunk.
sabbus also edited to add parallel collections to the library jar - review by phaller
Diffstat (limited to 'test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ReduceList.scala')
-rw-r--r-- | test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ReduceList.scala | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ReduceList.scala b/test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ReduceList.scala new file mode 100644 index 0000000000..db4fb3331f --- /dev/null +++ b/test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ReduceList.scala @@ -0,0 +1,53 @@ +package scala.collection.parallel.benchmarks.parallel_array + + + + +object ReduceList extends Companion { + def benchName = "reduce-list"; + def apply(sz: Int, p: Int, what: String) = new ReduceList(sz, p, what) + override def comparisons = List("jsr") + override def defaultSize = 20000 +} + +object ListCreator extends (Int => List[Int]) { + def apply(idx: Int) = { + val len = 50 + idx % 100 + (for (i <- 0 until len) yield i).toList + } +} + +object ListOps { + val redop = (a: List[Int], b: List[Int]) => combineLists(a, b) + val reducer = new extra166y.Ops.Reducer[List[Int]] { + def op(a: List[Int], b: List[Int]) = combineLists(a, b) + } + def combineLists(a: List[Int], b: List[Int]) = { + if (a.foldLeft(0)(_ + _) > b.foldLeft(0)(_ + _)) a else b + } +} + +class ReduceList(sz: Int, p: Int, what: String) +extends Resettable[List[Int]](sz, p, what, ListCreator, new Array[Any](_), classOf[List[Int]]) { + def companion = ReduceList + override def repetitionsPerRun = 10 + override val runs = 15 + + def runpar = pa.reduce(ListOps.redop) + def runseq = sequentialReduce(ListOps.redop, sz, List[Int]()) + def runjsr = jsrarr.reduce(ListOps.reducer, List[Int]()) + override def comparisonMap = collection.Map("jsr" -> runjsr _) +} + + + + + + + + + + + + + |