Ruby並行・並列くらべ - @ledsun blog でRubyの並行・並列の効果を測ってみました。 DBへのIO時間があると、効果がわかりにくかったです。 DBへの書き込み処理をコメントアウトしてリトライしました。
結果
シリアル処理
2m 4s。 DBへの書き込み処理とコメントアウトする前は2m 27sでした。 23秒速くなりました。 ということはIOバウンドな処理時間は23秒しかないみたいです。 思ってたより、大分CPUバウンドな処理でした。
スレッド
2m 4s。 シリアル処理と同じです。
プロセス
1m 31s。なんかすごい速い。 DBへの書き込み処理とコメントアウトする前は1m 48sでした。 15秒縮まりました。
Ractor
1m 32s 。 DBへの書き込み処理とコメントアウトする前は1m 52sでした。 20秒縮まっています。 シリアル処理比で1.35倍です。
Ractorで並列化したときはプロセスで並列化した時と同じぐらいの性能は出るようです。 プロセスと同じ性能がでるなら、ゾンビ化や例外処理の心配する必要があるプロセスよりRactor使えば良いじゃん、て気持ちになってきました。