似非プログラマのうんちく

「似非プログラマの覚え書き」出張版

エラトステネスの篩はもう古い !?

タイトルは親父ギャグじゃねーです !

ゆっちさんがこんな記事を書いていたようで。
ゆっちのBlog » Java8 時代の素数の求め方

最初はそのままパクらせていただいて動かしていました(それでもなかなかに早い)が、地味に無駄な処理があることに気がつきました。

boxed して collect してる部分がそれです。IntStream のままでも count メソッドで個数は確認できるので、以下のように修正してみました。あと、秒未満の処理時間は細かい数値はいらないと思ったのでミリ秒単位で切って表示させてます。


Stream API を用いた並列化された素数検出プログラム

実行時に他のプロセスが動いてたりするとアレですが、一応の目安として

1973815 個の素数を検出しました。
0 時間 0 分 32 秒 914

と、期待される結果と共に、家の非力なマシンでも 30 秒そこそこで処理が完了する*1ことがわかりました。Java8 すげぇ。

*1:オリジナル版だと 1 分ちょい掛かる