diff options
author | Aleksandar Pokopec <aleksandar.prokopec@epfl.ch> | 2010-11-10 16:21:28 +0000 |
---|---|---|
committer | Aleksandar Pokopec <aleksandar.prokopec@epfl.ch> | 2010-11-10 16:21:28 +0000 |
commit | a1b86a7e513f16f93aa2bc4294664f46bcac95d9 (patch) | |
tree | 046312a0c1ecd9ff2670e853de3252da3f5e1b3a | |
parent | 29bd7715f70d90a381d794e00d26abebcbfdd263 (diff) | |
download | scala-a1b86a7e513f16f93aa2bc4294664f46bcac95d9.tar.gz scala-a1b86a7e513f16f93aa2bc4294664f46bcac95d9.tar.bz2 scala-a1b86a7e513f16f93aa2bc4294664f46bcac95d9.zip |
Added a benchmark for mutable hash sets.
No review.
-rw-r--r-- | test/benchmarks/source.list | 1 | ||||
-rw-r--r-- | test/benchmarks/src/scala/collection/parallel/benchmarks/hashtables/ParallelHashTableSets.scala | 144 | ||||
-rwxr-xr-x | tools/remotetest | 7 |
3 files changed, 146 insertions, 6 deletions
diff --git a/test/benchmarks/source.list b/test/benchmarks/source.list index ff255cf11a..dffd5ef4ea 100644 --- a/test/benchmarks/source.list +++ b/test/benchmarks/source.list @@ -1,6 +1,7 @@ src/scala/collection/parallel/Benchmarking.scala src/scala/collection/parallel/benchmarks/parallel_view/SeqViewBenches.scala src/scala/collection/parallel/benchmarks/hashtables/ParallelHashTables.scala +src/scala/collection/parallel/benchmarks/hashtables/ParallelHashTableSets.scala src/scala/collection/parallel/benchmarks/arrays/ObjectAccess.scala src/scala/collection/parallel/benchmarks/arrays/IntAccess.scala src/scala/collection/parallel/benchmarks/arrays/Resetting.scala diff --git a/test/benchmarks/src/scala/collection/parallel/benchmarks/hashtables/ParallelHashTableSets.scala b/test/benchmarks/src/scala/collection/parallel/benchmarks/hashtables/ParallelHashTableSets.scala new file mode 100644 index 0000000000..2ac1e1c110 --- /dev/null +++ b/test/benchmarks/src/scala/collection/parallel/benchmarks/hashtables/ParallelHashTableSets.scala @@ -0,0 +1,144 @@ +package scala.collection.parallel.benchmarks.hashtables + + + + +import scala.collection.parallel.benchmarks.generic.StandardParIterableBenches +import scala.collection.parallel.benchmarks.generic.Dummy +import scala.collection.parallel.benchmarks.generic.DummyOperators +import scala.collection.parallel.mutable.ParHashSet + + + + + +trait ParHashTableSetBenches[T] extends StandardParIterableBenches[T, ParHashSet[T]] { + + def nameOfCollection = "mutable.ParHashSet" + def comparisonMap = collection.mutable.Set() + val forkJoinPool = new scala.concurrent.forkjoin.ForkJoinPool + + object Map2 extends IterableBenchCompanion { + override def defaultSize = 5000 + override def comparisons = List() + def benchName = "map2"; + def apply(sz: Int, p: Int, w: String) = new Map2(sz, p, w) + } + + class Map2(val size: Int, val parallelism: Int, val runWhat: String) + extends IterableBench { + var result: Int = 0 + def comparisonMap = collection.Map() + def runseq = { + val r = this.seqcoll.asInstanceOf[collection.mutable.HashSet[T]].map(operators.mapper2) + result = r.size + } + def runpar = { + result = this.parcoll.map(operators.mapper2).size + } + def companion = Map2 + override def repetitionsPerRun = 50 + override def printResults { + println("Size of last result: " + result) + } + } + + object HeavyMap extends IterableBenchCompanion { + override def defaultSize = 5000 + override def comparisons = List() + def benchName = "heavy-map"; + def apply(sz: Int, p: Int, w: String) = new HeavyMap(sz, p, w) + } + + class HeavyMap(val size: Int, val parallelism: Int, val runWhat: String) + extends IterableBench { + var result: Int = 0 + def comparisonMap = collection.Map() + def runseq = { + val r = this.seqcoll.asInstanceOf[collection.mutable.HashSet[T]].map(operators.heavymapper) + result = r.size + } + def runpar = { + result = this.parcoll.map(operators.heavymapper).size + } + def companion = HeavyMap + override def repetitionsPerRun = 50 + } + + object Reduce2 extends IterableBenchCompanion { + override def defaultSize = 50000 + override def comparisons = List() + def benchName = "reduce2"; + def apply(sz: Int, p: Int, w: String) = new Reduce2(sz, p, w) + } + + class Reduce2(val size: Int, val parallelism: Int, val runWhat: String) + extends IterableBench { + def comparisonMap = collection.Map() + def runseq = this.seqcoll.reduceLeft(operators.mediumreducer) + def runpar = this.parcoll.reduce(operators.mediumreducer) + def companion = Reduce2 + } + + object Foreach extends IterableBenchCompanion { + override def defaultSize = 50000 + override def comparisons = List() + def benchName = "foreach"; + def apply(sz: Int, p: Int, w: String) = new Foreach(sz, p, w) + } + + class Foreach(val size: Int, val parallelism: Int, val runWhat: String) + extends IterableBench { + def comparisonMap = collection.Map() + def runseq = this.seqcoll.foreach(operators.foreachFun) + def runpar = this.parcoll.foreach(operators.foreachFun) + def companion = Foreach + } + +} + + + + + +object RefParHashTableSetBenches extends ParHashTableSetBenches[Dummy] { + + object ForeachSet extends IterableBenchCompanion { + override def defaultSize = 50000 + override def comparisons = List() + def benchName = "foreach-set"; + def apply(sz: Int, p: Int, w: String) = new ForeachSet(sz, p, w) + } + + class ForeachSet(val size: Int, val parallelism: Int, val runWhat: String) + extends IterableBench { + val array = new Array[Int](size) + def comparisonMap = collection.Map() + def runseq = for (x <- this.seqcoll) array(x.in) += 1 + def runpar = for (x <- this.parcoll) array(x.in) += 1 + def companion = ForeachSet + + override def onEnd { + for (i <- 0 until array.length) { + assert(array(i) == repetitionsPerRun * runs) + } + } + } + + val operators = DummyOperators + + def createSequential(sz: Int, p: Int) = { + val ht = new collection.mutable.HashSet[Dummy] + for (i <- 0 until sz) ht += new Dummy(i) + ht + } + + def createParallel(sz: Int, p: Int) = { + val phm = new ParHashSet[Dummy] + for (i <- 0 until sz) phm += new Dummy(i) + forkJoinPool.setParallelism(p) + phm.environment = forkJoinPool + phm + } + +} diff --git a/tools/remotetest b/tools/remotetest index 15b7f2dc02..fb89794c30 100755 --- a/tools/remotetest +++ b/tools/remotetest @@ -221,12 +221,7 @@ fi # run the build and tests SET_ANT_OPTS='export ANT_OPTS="-XX:MaxPermSize=192M -Xmx1536m"; echo $ANT_OPTS' echo "Set ant options command: $SET_ANT_OPTS" -if [[ $LOGFILE != "" ]] -then - ssh $USER@$LOCATION "cd $WORKREPO; $SET_ANT_OPTS; ant test" -else - ssh $USER@$LOCATION "cd $WORKREPO; $SET_ANT_OPTS; ant test | tee -a $LOGFILE" -fi +ssh $USER@$LOCATION "cd $WORKREPO; $SET_ANT_OPTS; ant nightly | tee -a $LOGFILE" success |