チョットハヤイLongMapを計測してみる
Scaladoc調べてたらLongMapとかいうのを発見した。2.7からimmutableなLongMapが、2.11でmutableなものが実装されている。
Scaladocによると「Longに特化したHashMapでHashMapよりはやい」とのことなので軽くテストしてみた。
import scala.collection.immutable.LongMap import scala.util.Random object Main { val Max = 1000000L val Xs = (0L to Max) val random = new Random() val randoms = Xs.map(_ => math.abs(random.nextLong % Max)) def main(args: Array[String]): Unit = { println("Map: " + timer { val map = Xs.map(it => it -> it.toString).toMap randoms.map(map.apply) }.toString) println("LongMap:" + timer { val map = LongMap(Xs.map(it => it -> it.toString):_*) randoms.map(map.apply) }.toString) } def timer(f: => Any): Long = { val start = System.currentTimeMillis f System.currentTimeMillis - start } }
計測結果は、
- Map
- 1387ms
- LongMap
- 1030ms
言うほど差が出る訳でも無さそう…?