diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2017-02-03 12:01:17 -0700 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2017-02-03 12:01:17 -0700 |
commit | a58de0e81e60201f48a449bb380ec1c5feb33bd2 (patch) | |
tree | 0a26f10f5ce600646780b8ca5f97182b2a1ffac2 /test/benchmarks/src/main/scala/scala/collection/immutable/HashMapBenchmark.scala | |
parent | fff17320448c9691851aa16897e2fa2d75e0f11a (diff) | |
download | scala-a58de0e81e60201f48a449bb380ec1c5feb33bd2.tar.gz scala-a58de0e81e60201f48a449bb380ec1c5feb33bd2.tar.bz2 scala-a58de0e81e60201f48a449bb380ec1c5feb33bd2.zip |
Benchmark for immutable.HashMap.{get, contains}
Diffstat (limited to 'test/benchmarks/src/main/scala/scala/collection/immutable/HashMapBenchmark.scala')
-rw-r--r-- | test/benchmarks/src/main/scala/scala/collection/immutable/HashMapBenchmark.scala | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/test/benchmarks/src/main/scala/scala/collection/immutable/HashMapBenchmark.scala b/test/benchmarks/src/main/scala/scala/collection/immutable/HashMapBenchmark.scala new file mode 100644 index 0000000000..8b78ae1875 --- /dev/null +++ b/test/benchmarks/src/main/scala/scala/collection/immutable/HashMapBenchmark.scala @@ -0,0 +1,58 @@ +package scala.collection.immutable + +import org.openjdk.jmh.annotations._ +import org.openjdk.jmh.infra._ +import org.openjdk.jmh.runner.IterationType +import benchmark._ +import java.util.concurrent.TimeUnit + +import scala.collection.mutable + +@BenchmarkMode(Array(Mode.AverageTime)) +@Fork(2) +@Threads(1) +@Warmup(iterations = 10) +@Measurement(iterations = 10) +@OutputTimeUnit(TimeUnit.NANOSECONDS) +@State(Scope.Benchmark) +class HashMapBenchmark { + @Param(Array("10", "100", "1000")) + var size: Int = _ + + var existingKeys: Array[Any] = _ + var missingKeys: Array[Any] = _ + + @Setup(Level.Trial) def initKeys(): Unit = { + existingKeys = (0 to size).map(i => (i % 4) match { + case 0 => i.toString + case 1 => i.toChar + case 2 => i.toDouble + case 3 => i.toInt + }).toArray + missingKeys = (size to 2 * size).toArray + } + + var map: collection.immutable.HashMap[Any, Any] = null + + @Setup(Level.Trial) def initializeMutable = { + map = collection.immutable.HashMap(existingKeys.map(x => (x, x)) : _*) + } + + @Benchmark def contains(bh: Blackhole): Unit = { + var i = 0; + while (i < size) { + bh.consume(map.contains(existingKeys(i))) + bh.consume(map.contains(missingKeys(i))) + i += 1 + } + } + + @Benchmark def get(bh: Blackhole): Unit = { + var i = 0; + while (i < size) { + bh.consume(map.get(existingKeys(i))) + bh.consume(map.get(missingKeys(i))) + i += 1 + } + } +} |