ArrayとArrayBufferのどっちがどのくらいパフォーマンスがいいか調べる
こんなコードで試してみた。
object cm2 { def main(argv: Array[String]) { //count("ArrayBuffer", argv(0), func_arraybuf ) count("Array", argv(0), func_array ) } def func_array(src: String): Unit = { val a = new Array[String](100) for (i <- 0 until a.size) a(i) = src } def func_arraybuf(src: String): Unit = { val b = new scala.collection.mutable.ArrayBuffer[String] for (i <- 0 to 99) b.append(src) } def count(title: String, param: String, func: (String) => Unit): Unit = { println(title) val st = java.lang.System.nanoTime() func(param) println(java.lang.System.nanoTime() - st) } } // vim: set ts=4 sw=4 et:
なんでArrayBufferがコメントアウトされてるかというと、ArrayBufferとArrayは相互に影響するらしく、はじめの一回目に実行されるArray初期化処理および内容設定処理にかなり時間がかかり、次に行われる処理では時間がかなり短縮されるのだ。
ArrayBufferでの処理時間
$ java cm2 hoge ArrayBuffer 75020701
Arrayでの処理時間
$ java cm2 hoge Array 36957734
ArrayBufferの方がArrayより2倍ほど時間がかかるらしい。大した差ではない。