diff options
author | Aleksandar Pokopec <aleksandar.prokopec@epfl.ch> | 2010-06-09 07:56:13 +0000 |
---|---|---|
committer | Aleksandar Pokopec <aleksandar.prokopec@epfl.ch> | 2010-06-09 07:56:13 +0000 |
commit | 7aae8c7cbcd272f56629ada19623316399ca397f (patch) | |
tree | e95467de73a6af7b46484440769134d32346a05a /test | |
parent | e045a3ff33793e1d5bb61797f1afdcc3aba9e4c7 (diff) | |
download | scala-7aae8c7cbcd272f56629ada19623316399ca397f.tar.gz scala-7aae8c7cbcd272f56629ada19623316399ca397f.tar.bz2 scala-7aae8c7cbcd272f56629ada19623316399ca397f.zip |
Added `combine` and `split` to immutable.HashMap.
Under test/benchmarks there is a `bench` script to run benchmarks - it can be invoked after running building the library.
Review by rompf.
Diffstat (limited to 'test')
4 files changed, 59 insertions, 2 deletions
diff --git a/test/benchmarks/src/scala/collection/parallel/Benchmarking.scala b/test/benchmarks/src/scala/collection/parallel/Benchmarking.scala index 371ebccef4..f6aa63cb1a 100644 --- a/test/benchmarks/src/scala/collection/parallel/Benchmarking.scala +++ b/test/benchmarks/src/scala/collection/parallel/Benchmarking.scala @@ -92,6 +92,7 @@ trait BenchmarkRegister { register(hashtries.Iterate) register(hashtries.Construct) register(hashtries.Lookup) + register(hashtries.Combine) } diff --git a/test/benchmarks/src/scala/collection/parallel/benchmarks/hashtries/Combine.scala b/test/benchmarks/src/scala/collection/parallel/benchmarks/hashtries/Combine.scala new file mode 100644 index 0000000000..8c8d17e745 --- /dev/null +++ b/test/benchmarks/src/scala/collection/parallel/benchmarks/hashtries/Combine.scala @@ -0,0 +1,55 @@ +package scala.collection.parallel.benchmarks +package hashtries + + + + +import collection.immutable.{HashMap => HashTrie} +import collection.mutable.HashMap + + + + + + +class Combine(val size: Int, val parallelism: Int, val runWhat: String) extends Bench with IntInit { + var thattrie = new HashTrie[Int, Int] + for (i <- size until 2 * size) thattrie += ((i, i)) + val thatmap = new HashMap[Int, Int] + for (i <- size until 2 * size) thatmap += ((i, i)) + + def runpar = throw new UnsupportedOperationException + def runseq = runhashtrie + def runhashtrie = hashtrie combine thattrie + def runappendtrie = hashtrie ++ thattrie + def runhashmap = hashmap ++ thatmap + def companion = Combine + def comparisonMap = Map("hashtrie" -> runhashtrie _, "hashmap" -> runhashmap _, "appendtrie" -> runappendtrie _) + override def reset = runWhat match { + case "appendtrie" => initHashTrie + case _ => super.reset + } +} + + +object Combine extends BenchCompanion { + def collectionName = "HashTrie" + def benchName = "combine"; + def apply(sz: Int, p: Int, what: String) = new Combine(sz, p, what) + override def defaultSize = 5000 +} + + + + + + + + + + + + + + + diff --git a/test/benchmarks/src/scala/collection/parallel/benchmarks/hashtries/Foreach.scala b/test/benchmarks/src/scala/collection/parallel/benchmarks/hashtries/Foreach.scala index 6002b5d8b8..f53ea02e36 100644 --- a/test/benchmarks/src/scala/collection/parallel/benchmarks/hashtries/Foreach.scala +++ b/test/benchmarks/src/scala/collection/parallel/benchmarks/hashtries/Foreach.scala @@ -14,7 +14,7 @@ import collection.mutable.HashMap class Foreach(val size: Int, val parallelism: Int, val runWhat: String) extends Bench with IntInit { def runpar = throw new UnsupportedOperationException - def runseq = throw new UnsupportedOperationException + def runseq = runhashtrie def runhashmap = hashmap.foreach(n => ()) def runhashtrie = hashtrie.foreach(n => ()) def companion = Foreach diff --git a/test/benchmarks/src/scala/collection/parallel/benchmarks/hashtries/IntInit.scala b/test/benchmarks/src/scala/collection/parallel/benchmarks/hashtries/IntInit.scala index 3328dcbe0f..dbbe64e290 100644 --- a/test/benchmarks/src/scala/collection/parallel/benchmarks/hashtries/IntInit.scala +++ b/test/benchmarks/src/scala/collection/parallel/benchmarks/hashtries/IntInit.scala @@ -17,6 +17,7 @@ trait IntInit extends Bench { def reset = runWhat match { case "hashmap" => initHashMap case "hashtrie" => initHashTrie + case "seq" => initHashTrie } def initHashTrie = { hashtrie = new HashTrie @@ -27,4 +28,4 @@ trait IntInit extends Bench { for (i <- 0 until size) hashmap += ((i, i)) } -}
\ No newline at end of file +} |