Scalaでaobench
windows-x64 1.7.0 で前回と同じ https://gist.github.com/1029695 を実行。
$ cat /proc/cpuinfo model name : Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz
$ echo $JAVA_HOME C:\Program Files\Java\jdk1.7.0\ $ scala -J-server jp.peppermint.vec.immutable.App List(1780, 1750, 1758, 1748, 1761) 1756.3333333333333 $ scala -J-server jp.peppermint.vec.mutable.App List(1717, 1687, 1681, 1685, 1684) 1685.3333333333333
$ echo $JAVA_HOME C:\Program Files (x86)\Java\jdk1.7.0\ $ scala -J-server jp.peppermint.vec.immutable.App List(2150, 2145, 2146, 2153, 2138) 2147.0 $ scala -J-server jp.peppermint.vec.mutable.App List(2111, 2097, 2090, 2091, 2087) 2092.6666666666665
前回のベンチマークではP8700 @ 2.53GHzでjdk1.6.0_18で実行した結果ではimmutableのほうが格段に遅かったけれど、6u26と1.7.0のどちらもimmutable版だからといって半分の速度になったりはしない。
5%〜15%程度の違いなら一時オブジェクト使ってimmutableに書くほうが楽そう。