先週のScalaのお勉強は、先々週に引き続いてコレクション。
- Benchmark…実行時間を計測するクラス。コレクションのメソッドの実行時間を計るのに使用。
- Seq…Seq(Listとか)のインスタンス生成・メソッドの実行時間の試測。
- forの変換…for式がforeachとかmapとかfilterに置き換えられる事を確認。
- 関数への変換…コレクションを関数型の変数に代入している例を見かけて、どうなってるんだ?!とびっくりしたが…。
- Javaとの変換…Javaのコレクションとの変換方法。
Seqの主な不変クラスであるList・Vector・StreamとArrayのどれが速いかと言うと、やはり一概には言えないという結論になる^^;
呼び出すメソッドによって当然異なるし、保持している要素数によっても異なる。
今回は実行速度にしか着目しなかったが、メモリー使用量も異なるだろうし。
とりあえず重要なのは、ScalaのVectorはJavaのVectorとは何の関係もない、ということ。
JavaのVectorはArrayList(やCopyOnWriteArrayList)に取って代わられて要らない子扱いだが、ScalaのVectorは2.8から導入されたというだけあって、なかなか優秀な感じ。