NetBeans 8 Dev を使って Lambda で遊ぶ その3

Java NetBeans

今日も NetBeans 8 Dev を使って Lambda で遊んでみます。

せっかく優秀な統合開発環境を使ってるんだからその機能を使って Lambda の並行処理がちゃんとされているか確認します。

決して疑ってる訳ではございません。

でも、この眼でしっかり確認してみたいだけです。

ってことで昨日作ったプログラムをちょこっと変更して本当に Fork / join Framework が呼び出されているか見てみます。

jp\yucchi\mylambdasample\MyLambdaSample.java

このようにテスト用メンバーを適当に追加して strean() メソッドを使った処理と parallelStream() メソッドを使った場合の違いを確認します。

まず、stream() メソッドを使った時の実行結果は次のようになりました。

run:
<– MyBestMember FightingPower 最大値を表示 –>
19999999
0時間0分41秒8805609010000026
BUILD SUCCESSFUL (total time: 1 minute 0 seconds)

次に昨日のように parallelStream() メソッドを使った場合は

run:
<– MyBestMember FightingPower 最大値を表示 –>
19999999
0時間0分20秒9766124870000006
BUILD SUCCESSFUL (total time: 43 seconds)

このように parallelStream() メソッドを使った方が高速に処理されることが確認できました。

このようにはっきりとした違いが確認できたので次はその仕組みである parallelStream() メソッドを使うと

Fork / join Framework が呼び出されて並行処理をしているところを NetBeans のプロファイラにて暴き出してみてみます。

まず、貧相な stream() メソッドを使った場合からみてみます。

次に贅沢な parallelStream() メソッドを使った場合はこうなります。

このように parallelStream() メソッドを使った場合は  Fork / join Framework が呼び出されているのが解ります。

stream() メソッドの存在価値ってどうなんでしょう?

贅沢な parallelStream() メソッドを使っていればいいのかな?

使い分けシチュエーションがちょっと解りません。

今時、携帯電話さえマルチコアになってるんだからとりあえず parallelStream() メソッドを使っとけばいいのか?

とりあえず Lambda を使えばこのような並行処理プログラミングを意識しないでも簡単に実装できてしまうってことね。

cludia_6_001

Hatena タグ: ,

« »

Leave a Reply

* が付いている項目は、必須項目です!

次の HTML タグと属性を利用できます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

*

Trackback URL