@ledsun blog

無味の味は佳境に入らざればすなわち知れず

Ruby 並行・並列くらべ 2

Ruby並行・並列くらべ - @ledsun blogRubyの並行・並列の効果を測ってみました。 DBへのIO時間があると、効果がわかりにくかったです。 DBへの書き込み処理をコメントアウトしてリトライしました。

結果

シリアル処理

シリアル処理の実行結果

2m 4s。 DBへの書き込み処理とコメントアウトする前は2m 27sでした。 23秒速くなりました。 ということはIOバウンドな処理時間は23秒しかないみたいです。 思ってたより、大分CPUバウンドな処理でした。

スレッド

スレッドの実行結果

2m 4s。 シリアル処理と同じです。

プロセス

プロセスの実行結果

1m 31s。なんかすごい速い。 DBへの書き込み処理とコメントアウトする前は1m 48sでした。 15秒縮まりました。

Ractor

Ractorの実行結果

1m 32s 。 DBへの書き込み処理とコメントアウトする前は1m 52sでした。 20秒縮まっています。 シリアル処理比で1.35倍です。

Ractorで並列化したときはプロセスで並列化した時と同じぐらいの性能は出るようです。 プロセスと同じ性能がでるなら、ゾンビ化や例外処理の心配する必要があるプロセスよりRactor使えば良いじゃん、て気持ちになってきました。