1
/
5

RubyKaigi 2022 参加記 #8 - How fast really is Ruby 3.x? (Day2)

Photo by Traf on Unsplash

こんにちは!
2022 年にWantedly に新卒入社し、DX Squad でエンジニアをしている大森です。

今回は、日本最大の Ruby に関するカンファレンスである RubyKaigi に Wantedly がスポンサードし、いくつかの講演を聴講しています。Wantedly はスポンサーブースを設けていて、Twitterをフォローしてくださった方には技術書や開発に役立つ Engineering Handbook をプレゼントしています!

WantedlyはRubyKaigi2022にプラチナプランとして協賛し、技術書と開発に役立つHandbookをブースでプレゼントしています #rubykaigi | Wantedly, Inc.
こんにちは!Wantedlyで技術イベント企画まわりを担当しています竹内みずき (@amanda__mt)です! いよいよ本日から3日間、 RubyKaigi 2022 が開催されますね!私たちはこの度プラチナスポンサーとして協賛させていただき、三重県現地にて参加する運びとなりました。 直近2年間はほぼすべてのカンファレンスやイベントがオンラインでの開催となり、今回は久しぶりの ...
https://www.wantedly.com/companies/wantedly/post_articles/430335

2日目のお昼は天むすを頂きました。天むす発祥のお店の天むすらしく、とても美味しかったです。

本記事では、2日目の発表である How fast really is Ruby 3.x? について紹介させていただきます。

How fast really is Ruby 3.x?

RubyKaigi公式ページ: https://rubykaigi.org/2022/presentations/fujimotos.html#day2
スライド: https://github.com/fujimotos/RubyKaigi2022/blob/38fe29222e9a717f32d29eb6e604a387c6b18382/20220908-RubyKaigi2022.pdf

この発表は、Fluentd のメンテナをしてらっしゃる Fujimoto さんのご発表でした。

Fluentd とは、各種ログを収集し、パースし保存するなど、適切な処理を行うためのアプリケーションです。主にRuby で書かれていて、Wantedly でもさまざまな場面で活用しています。

Ruby 3x3

Ruby 3x3 という、Ruby を3倍早くしようというプロジェクトがありました。過去のRubyKaigiでは、Rails アプリケーションを題材に、 Ruby 3x3 の結果測定を行う発表があったそうです。

> Fibers Are the Right Solution https://rubykaigi.org/2019/presentations/ioquatix.html

この発表では、Rails アプリケーションの実行時間の大半はDBアクセスなどの待ち時間に使われている、といったグラフが示されていたようです。

https://www.codeotaku.com/journal/2018-11/fibers-are-the-right-solution/Fibers%20Are%20the%20Right%20Solution.pdf 11ページ

そのため、Ruby の速度が 3倍になっても Rails アプリケーションが3倍高速になるわけではない、というお話でした。

Ruby のランタイムバージョンと速度の関係

Rails アプリケーションと違い、Fluentd はログをパースし処理するアプリケーションです。

その特性から、DBアクセスなどの外部読み込みによる待ち時間がないため、Ruby のランタイムをフルに利用できます。そのため、Ruby ランタイムの改善により、実際に速度向上がみられたようです。

次のグラフは、実際に発表で示されていたものを引用させていただきました。

Ruby 1.9 から 3.2 で Fluentd を動かして、LTSV のログのスループットを計測されたようです。

(https://github.com/fujimotos/RubyKaigi2022/blob/38fe29222e9a717f32d29eb6e604a387c6b18382/ltsv.png)

グラフから、スループットが バージョン 1.9.3 => 3.2.0+yjit で3.15倍になっていることがわかります。

多言語との比較

次に、メジャーなスクリプト言語でそれぞれテキストをパースするコードを書いて、スループットを比較する実験が行われました。

(https://github.com/fujimotos/RubyKaigi2022/blob/38fe29222e9a717f32d29eb6e604a387c6b18382/langs.png)
これをみると、Ruby は飛び抜けて早いわけではなく、むしろ他のスクリプト言語のほうが現状では早い、という結果であることがわかります。

Ruby 3x3 Revisted が達成されると、Fluentdのメンテナとしても嬉しいし、他の言語と比較して遅い、といった現状が解決されるかもしれないと話されていました。

Fluentd の未来

Fluentd の次期リリースが 2023年 3月に行われる予定だそうです。そこでは、Ruby 3.2 ベースになり、YJITも有効になるそうです。

YJITが有効になったことで、約10%の速度向上が確認できているそうです。

感想

Ruby 3x3 の結果、Rails アプリケーションが 3倍高速になるわけではない、という話は納得できました。しかし、Fluentdのように Ruby のランタイムをフル活用するアプリケーションでは、すごく効いてくることがわかりました。

また、Fluentd も Ruby 3.2 ベースでリリースされ、YJITが有効になるという話を聞いてWantedlyでもいつか導入してみたいと思いました。

興味深い発表をありがとうございました!

RubyKaigiも早いものでもう折返しです。
Wantedlyから参加したエンジニアが他の記事をこれからも出していきます。そちらも御覧ください。

#9 次のブログへ👇

RubyKaigi 2022 参加記 #9 - さまざまな最適化手法に関する発表 (Day2) | Wantedly Engineer Blog
こんにちは、ソフトウェアエンジニアの千葉です。自分は RubyKaigi で Ruby コミッターそれぞれから今後の熱い展望を聞き、興奮冷めやらぬところですが、皆様はイカがお過ごしでしょうか。 今回、日本最大の Ruby に関するカンファレンスである RubyKaigi に Wantedly がスポンサードし、いくつかの講演を聴講させていただいています。(Wantedly はスポンサーブースを設けていて、エンジニアが執筆した技術書の配布等を行っています!!) RubyKaigi の2日目、たくさんの Ru
https://www.wantedly.com/companies/wantedly/post_articles/431275
Wantedly, Inc.では一緒に働く仲間を募集しています
6 いいね!
6 いいね!
同じタグの記事
今週のランキング
Wantedly, Inc.からお誘い
この話題に共感したら、メンバーと話してみませんか?