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/ForeachHeavy.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/ForeachHeavy.scala')
-rw-r--r-- | test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ForeachHeavy.scala | 42 |
1 files changed, 42 insertions, 0 deletions
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 new file mode 100644 index 0000000000..17ad2f9882 --- /dev/null +++ b/test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ForeachHeavy.scala @@ -0,0 +1,42 @@ +package scala.collection.parallel.benchmarks.parallel_array + + + + +object ForeachHeavy extends Companion { + def benchName = "foreach-heavy"; + def apply(sz: Int, parallelism: Int, what: String) = new ForeachHeavy(sz, parallelism, what) + override def comparisons = List("jsr") + override def defaultSize = 16 + + val fun = (a: Cont) => heavyOperation(a) + val funjsr = new extra166y.Ops.Procedure[Cont] { + def op(a: Cont) = heavyOperation(a) + } + + def heavyOperation(a: Cont) { + checkPrime(a.in + 1000000000) + } + + def checkPrime(n: Int) = { + var isPrime = true + var i = 2 + val until = scala.math.sqrt(n).toInt + 1 + while (i < until) { + if (n % i == 0) isPrime = false + i += 1 + } + isPrime + } +} + +class ForeachHeavy(sz: Int, p: Int, what: String) +extends Resettable(sz, p, what, new Cont(_), new Array[Any](_), classOf[Cont]) { + def companion = ForeachHeavy + override def repetitionsPerRun = 250 + + def runpar = pa.foreach(ForeachHeavy.fun) + def runseq = sequentialForeach(ForeachHeavy.fun, sz) + def runjsr = jsrarr.apply(ForeachHeavy.funjsr) + def comparisonMap = collection.Map("jsr" -> runjsr _) +} |