summaryrefslogtreecommitdiff
path: root/test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ReduceList.scala
diff options
context:
space:
mode:
authorAleksandar Pokopec <aleksandar.prokopec@epfl.ch>2010-06-07 10:15:32 +0000
committerAleksandar Pokopec <aleksandar.prokopec@epfl.ch>2010-06-07 10:15:32 +0000
commite67f56076624ea83383901934a30280d7f97380f (patch)
treea28b45d7a79ff9002735ea225b3a4733ac4d0234 /test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ReduceList.scala
parentdd396886d0da88326e5e4772af4d8813360ea8a5 (diff)
downloadscala-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.scala53
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 _)
+}
+
+
+
+
+
+
+
+
+
+
+
+
+