diff options
Diffstat (limited to 'test/benchmarks')
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 _) +} + + + + + + + + + + |