Scala 2.9.0から導入された新機能の紹介(1)

今回から何回かに分けて、本日リリースされたScala 2.9.0の新機能について紹介していきたいと思います。

まず,第一回目は、並列コレクション(Parallel Collections)について紹介したいと思います.

今回のプログラムは,ScalaのREPL(対話型評価環境)上でプログラム実行したいと思います.
REPLは配布されているScalaの実行ファイル(scala.batまたはscala)を実行することで起動します.
Scalaのサイトからダウンロードし,実行してください.
すると,次のようなバナーが表示されると思います.


《 scala(REPL)起動時の表示 》
Welcome to Scala version 2.9.0.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_24).
Type in expressions to have them evaluated.
Type :help for more information.

では実際に動作の違いを確認してみます.
まずは,通常のforeachを実行してみます.
すると,1から100までの数字が順番(シーケンシャル)に表示されます.


《 通常のforeach 》
scala> (1 to 100) foreach(x => print(x + " "))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

次に,並列版のforeachを実行してみます.
既存のコレクションを並列化するにはそのコレクションに対して"par"を実行します.
実行すると並列化されたコレクションへ変換されます.
では並列化したforeachを実行してみます.
すると,1から100までの数字が複数並列(パラレル)に実行されていることが表示から分かります.


《 並列化したforeach 》
scala> (1 to 100).par foreach(x => print(x + " "))
1 51 63 64 65 66 67 76 77 78 79 80 81 68 52 2 53 69 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 57 58 59 60 61 62 26 27 28 29 70 54 3 55 71 30 72 56 4 5 6 7 8 9 10 11 12 73 31 74 13 38 14 15 16 75 32 44 17 39 18 45 41 33 42 46 47 19 40 20 48 43 34 35 49 21 50 36 22 37 23 24 25

なお,scala.collection.parallel.availableProcessorsの値を見てみれば,実行環境で同時使用が可能なCPUのコア数を表示させることができます.
次のものは,Intel Core i7 M620で実行した結果です.


《 CPUのコア数を表示 》
scala> collection.parallel.availableProcessors
res0: Int = 4

上記のように簡単に通常のコレクションを並列化して実行することができますので,
Scalaを利用している方は,ぜひ試してみてはいかがでしょうか?

biz-Stream詳細情報  biz-Stream資料請求

超高速!!高機能!! Web帳票ソリューション biz-Stream

オンデマンドかつリアルタイムにビジネスドキュメントを生成する帳票ソリューション