summaryrefslogtreecommitdiff
path: root/test/benchmarks
diff options
context:
space:
mode:
Diffstat (limited to 'test/benchmarks')
-rw-r--r--test/benchmarks/source.list1
-rw-r--r--test/benchmarks/src/scala/collection/parallel/Benchmarking.scala1
-rw-r--r--test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ForeachHeavy.scala3
-rw-r--r--test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ScanMedium.scala55
4 files changed, 60 insertions, 0 deletions
diff --git a/test/benchmarks/source.list b/test/benchmarks/source.list
index dffd5ef4ea..9382e996dc 100644
--- a/test/benchmarks/source.list
+++ b/test/benchmarks/source.list
@@ -35,6 +35,7 @@ src/scala/collection/parallel/benchmarks/parallel_array/ReducePrime.scala
src/scala/collection/parallel/benchmarks/parallel_array/DropMany.scala
src/scala/collection/parallel/benchmarks/parallel_array/ReduceList.scala
src/scala/collection/parallel/benchmarks/parallel_array/ForeachLight.scala
+src/scala/collection/parallel/benchmarks/parallel_array/ScanMedium.scala
src/scala/collection/parallel/benchmarks/parallel_array/MatrixMultiplication.scala
src/scala/collection/parallel/benchmarks/parallel_array/SliceMedium.scala
src/scala/collection/parallel/benchmarks/parallel_array/ReverseMap.scala
diff --git a/test/benchmarks/src/scala/collection/parallel/Benchmarking.scala b/test/benchmarks/src/scala/collection/parallel/Benchmarking.scala
index 32c3ca154f..9eacc7ff1f 100644
--- a/test/benchmarks/src/scala/collection/parallel/Benchmarking.scala
+++ b/test/benchmarks/src/scala/collection/parallel/Benchmarking.scala
@@ -65,6 +65,7 @@ trait BenchmarkRegister {
register(parallel_array.PadToDouble)
register(parallel_array.AggregateLight)
register(parallel_array.ScanLight)
+ register(parallel_array.ScanMedium)
register(parallel_array.MatrixMultiplication)
// parallel views
diff --git a/test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ForeachHeavy.scala b/test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ForeachHeavy.scala
index b5dcfca872..f151158ad9 100644
--- a/test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ForeachHeavy.scala
+++ b/test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ForeachHeavy.scala
@@ -9,6 +9,8 @@ object ForeachHeavy extends Companion {
override def comparisons = List("jsr")
override def defaultSize = 2048
+ @volatile var z = 0
+
val fun = (a: Cont) => heavyOperation(a)
val funjsr = new extra166y.Ops.Procedure[Cont] {
def op(a: Cont) = heavyOperation(a)
@@ -26,6 +28,7 @@ object ForeachHeavy extends Companion {
if (n % i == 0) isPrime = false
i += 1
}
+ if (isPrime && (n.toString == z)) z += 1
isPrime
}
}
diff --git a/test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ScanMedium.scala b/test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ScanMedium.scala
new file mode 100644
index 0000000000..73a237189f
--- /dev/null
+++ b/test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ScanMedium.scala
@@ -0,0 +1,55 @@
+package scala.collection.parallel.benchmarks.parallel_array
+
+
+import scala.collection.parallel.benchmarks._
+import scala.collection.parallel.mutable.ParArray
+
+
+object ScanMedium extends Companion {
+ def benchName = "scan-medium";
+ def apply(sz: Int, parallelism: Int, what: String) = new ScanMedium(sz, parallelism, what)
+ override def comparisons = List("jsr")
+ override def defaultSize = 5000
+
+ val op = (a: Cont, b: Cont) => {
+ operation(a, b)
+ }
+ def operation(a: Cont, b: Cont) = {
+ val m = if (a.in < 0) 1 else 0
+ val k = calc(a.in, b.in, m)
+ new Cont(a.in + b.in + k * m * (0 until 2).reduceLeft(_ + _))
+ }
+ private def calc(x: Int, y: Int, n: Int) = {
+ var sum = x
+ for (i <- 0 until 500) {
+ sum += y + (if (sum % 2 == 0) n * x else y)
+ if (sum % 5 == 0) sum -= x * y - n * (x + y)
+ }
+ sum
+ }
+}
+
+
+class ScanMedium(sz: Int, p: Int, what: String)
+extends Resettable[Cont](sz, p, what, new Cont(_), new Array[Any](_), classOf[Cont]) {
+ def companion = ScanMedium
+ override def repetitionsPerRun = 50
+ override val runs = 12
+
+ def runpar = pa.scan(new Cont(0))(ScanMedium.op)
+ def runseq = sequentialScan(new Cont(0), ScanMedium.op, sz)
+ def runjsr = jsrarr.cumulate(new extra166y.Ops.Reducer[Cont] {
+ def op(a: Cont, b: Cont) = ScanMedium.operation(a, b)
+ }, new Cont(0))
+ override def comparisonMap = collection.Map("jsr" -> runjsr _)
+}
+
+
+
+
+
+
+
+
+
+