並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 60件

新着順 人気順

yjitの検索結果1 - 40 件 / 60件

タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。

yjitに関するエントリは60件あります。 rubyperformanceJIT などが関連タグです。 人気エントリには 『Pythonが速度改善に本気出すと聞いたので恒例のたらい回しベンチをとってみたら、RubyがYJITですごく速くなっていて驚いた話 - Smalltalkのtは小文字です』などがあります。
  • Pythonが速度改善に本気出すと聞いたので恒例のたらい回しベンチをとってみたら、RubyがYJITですごく速くなっていて驚いた話 - Smalltalkのtは小文字です

    2022-09-09改訂: gcc バージョンが古すぎたのと、C が内部計測でなかった点を改め計測しなおしました。結果、Rust は C より速くはなくなりました。紛らわしいことで、ごめんなさい。また、gcc のバージョンアップに伴い、Python および Ruby についてはビルドと計測をしなおしたので、これらも少し速い値に変わっています。この点もどうぞあしからず。 2022-09-10追記:ご要望のあった Python numba.njit 使用時と Go の結果を追加しました。PHP は JIT 有効化が面倒だったので断念しました^^; 2022-09-10追記2:C の計測で clock() を使うのはフェアではないという指摘がありましたので、念のため clock_gettime() を使用したコードに差し替えました。結果に大きな差はありません。 2022-09-10追記3:PHP

      Pythonが速度改善に本気出すと聞いたので恒例のたらい回しベンチをとってみたら、RubyがYJITですごく速くなっていて驚いた話 - Smalltalkのtは小文字です
    • スタディサプリ最大のRailsアプリケーションにYJIT+pitchforkを導入してメモリ使用量を劇的に削減するまで - スタディサプリ Product Team Blog

      こんにちは。SREのkyontanです。Rubyが大好きなのでRubyの話をします。ちなみにリクルートはRubyKaigi 2024へGold Sponsorとして協賛しています! *1。ぜひ沖縄でお会いしましょう。 これはあるアプリケーションのメモリ消費量を示すグラフなのですが、まさかgemを入れ替えるだけでこんなに嬉しい変化が見られるとは思っていませんでした。今日はそんなgemの話をします。 話は遡って2023年4月のある日、インターネットを眺めていたところ、ShopifyがpitchforkというOSSを公開したという情報が目に留まりました。 調べてみると、どうやら著名なRackサーバー実装の1つであるunicornの派生版であり、メモリ使用量の削減に特化しているらしいのです。 github.com これはスタディサプリ小中高のあのリソースドカ食いマイクロサービス第一位である api

        スタディサプリ最大のRailsアプリケーションにYJIT+pitchforkを導入してメモリ使用量を劇的に削減するまで - スタディサプリ Product Team Blog
      • Ruby が YJIT でなんで速くなるのか? Lazy Basic Block Versioning をサクッと理解してみた - estie inside blog

        estie でソフトウェアエンジニアをしている徳永(@yTo_9)です。 estie では Ruby を書いたりTypeScriptを書いたりしています! estie 夏のブログ祭りにかこつけて、せっかくなら普段は追わない部分だけど、気になっていたYJITなるものを深掘りしてみようと思い、「YJITがなぜRailsアプリケーションの高速化を実現できたのか」を調べてみたので紹介したいと思います。 「どうせ難しいんでしょ?」と思いながら調べてみたのですが、講演や論文の説明がわかりやすく、意外に概要を把握することは難しくありませんでした。 YJIT の核となっているのは Lazy Basic Block Versioning (LBBV) という手法で、これはRubyだけに限らず動的言語全般に適用可能な強力なアプローチであることがわかりました。 「あるタイプの条件分岐は、ほとんどの場合で片側しか

          Ruby が YJIT でなんで速くなるのか? Lazy Basic Block Versioning をサクッと理解してみた - estie inside blog
        • ニコニコ漫画をRuby3.2.0に更新してYJIT有効化するとパフォーマンス改善された話 - BOOK☆WALKER inside

          はじめに こんにちは。ニコニコ漫画の開発をしているyotaとtukiyoです。 この記事はペアブロギングによって執筆しています。 本記事ではニコニコ漫画で利用しているRubyのバージョンを3.2.0へ更新したこととYJITの有効化によるパフォーマンスの変化について紹介します。 ニコニコ漫画のインフラ構成についてにある通り、ニコニコ漫画は4つのプロダクトによって運用されています。 このうち本記事の対象となるのは、Rubyを利用している「新バックエンド」と「課金サブシステム」になります。 今回、Rubyのバージョンが3.2.0になったことでYJITが実験段階ではなくなりました。*1 ニコニコ漫画のバックエンドシステム内では複雑な処理も多く、恩恵に与ることを期待して更新を行いました。 結果として大きなパフォーマンスの向上が見られました。 はじめに 更新に関する作業 更新前後のパフォーマンス比較

            ニコニコ漫画をRuby3.2.0に更新してYJIT有効化するとパフォーマンス改善された話 - BOOK☆WALKER inside
          • RubyのYJITコンパイラをShopifyが本番に投入、Railsアプリを高速化。Rubyも本格的にJITの時代へ

            RubyのYJITコンパイラをShopifyが本番に投入、Railsアプリを高速化。Rubyも本格的にJITの時代へ ECサイト構築サービスを提供するShopifyは、Ruby 3.2に搭載されているYJITコンパイラを同社の本番環境に投入し、Railsベースで構築された同社サービスの性能改善を実現したと明らかにしました。 YJITコンパイラはShopifyが開発を進めてきたRubyのJITコンパイラで、大規模なRailsアプリケーションにおいてより高い性能向上を目指して開発されたものです。 一昨年末のRuby 3.1でメインラインにマージされ、昨年末に登場したRuby 3.2ではさらに改善が進められて本番環境にも耐えるようになったと説明されており、今回Shopify自身がそれを実証した形になりました。 If you’re a keen Rubyist, you may have hear

              RubyのYJITコンパイラをShopifyが本番に投入、Railsアプリを高速化。Rubyも本格的にJITの時代へ
            • Ruby 3.3でYJITを今すぐ有効にすべき理由 - k0kubun's blog

              Ruby 3.3がリリースされた。YJITには非常に多くの改善が含まれたリリースだったが、 NEWS解説記事やリリースパーティーでは 2点しか触れられなかったので、この記事ではRuby 3.3でYJITがどう改善されたかについて解説する。 YJITは既に実用段階 YJITはRuby 3.1で導入されたが、Ruby 3.2の時点でexperimentalのマークが外れ、実用段階となった。 Ruby 3.2では、以下のような企業で性能改善が報告された。 DeNA: 40% 高速化 GMOペバボ: 18% 高速化 STORES: 6.5-7.5% 高速化 Timee: 10% 高速化 メドピア: 2.8% 高速化 BOOK☆WALKER: 20-30% 高速化 Discourse: 15.8-19.6% 高速化 Lobsters: 26% 高速化 CompanyCam: 20-40% 高速化 弊

                Ruby 3.3でYJITを今すぐ有効にすべき理由 - k0kubun's blog
              • YJITの性能を最大限引き出す方法 - k0kubun's blog

                RubyのJITコンパイラYJITを開発している弊社Shopifyでは、社内で最もトラフィックが多いストアフロントのアプリにRuby 3.3 (master) をデプロイして平均レスポンスタイムが16%高速化、社内で最も大きなアプリであるモノリスにRuby 3.2をデプロイして平均レスポンスタイムが9%高速化している。他の会社でも、YJITを本番で有効にしたら高速化したという事例をちらほら目にした。 一方で必ずしも良い報告ばかりではなく、YJITを有効化したらメモリを使い切ってしまったりだとか、遅くなったみたいな報告も目に入ることがある。こういった問題は我々も多かれ少なかれ経験しており、それぞれ適切に対処することで解決できたため、その知見を共有する。*1 メモリを使い切ってしまった時 zenn.dev YJITを有効化すると、YJITが生成する機械語に加えて、それに関するメタデータもメモリ

                  YJITの性能を最大限引き出す方法 - k0kubun's blog
                • WebAssembly版Rubyが正式に登場、YJITが実用段階に。「Ruby 3.2.0」正式リリース

                  Ruby開発チームは、2022年12月25日にRuby 3.2.0の正式リリースを発表しました。Rubyは毎年12月25日に新バージョンをリリースすることが恒例となっています。 WebブラウザでRubyコードをそのまま実行可能に 新バージョンであるRuby 3.2.0の最大の新機能は、WASIベースのWebAssembly版Rubyが登場したことです。 これによりWASIをサポートしたWebAssemblyの実行環境、例えばWebブラウザやNode.js、DenoなどのサーバサイドJavaScriptランタイム、Cloudflare WorkersやFastly Compute@Edgeなどのクラウドエッジ環境で、WebAssembly版のRubyを実行できるようになりました。 これらの環境でWebAssemblyの上でRubyランタイムを実行すると、Rubyで書かれたコードをそのまま走ら

                    WebAssembly版Rubyが正式に登場、YJITが実用段階に。「Ruby 3.2.0」正式リリース
                  • Ruby 3.3’s YJIT Runs Shopify’s Production Code 15% Faster

                    Ruby 3.2 YJIT is Battle-Tested Shopify deploys YJIT on business-critical services in production, such as Storefront Renderer, the software that powers all online storefronts on Shopify’s platform, and Shopify’s Monolith. As of the Ruby 3.2 release, YJIT sped up our Storefront Renderer by 10% on average. Storefront Renderer is a complex application. Your more reasonable-sized app might get better/w

                      Ruby 3.3’s YJIT Runs Shopify’s Production Code 15% Faster
                    • YJITで使ったRustの省メモリ化テクニック - Qiita

                      これは Rust Advent Calendar 2022 のカレンダー2の22日目の記事です。 YJITとは 私は今年の7月からShopifyという会社でRubyのJITコンパイラであるYJITを開発している。このJITは今年CからRustに書き直されたため、現職では業務としてフルタイムでRustを書いている。 実用段階になったYJIT おそらく世界最大規模でRubyを使っている弊社では、お客様のお店のサイトをレンダリングするアプリには社内最大のトラフィックが来ていて、実は最近そのアプリほぼ全台で最新のYJITが有効化されたことが昨日公開情報になった。あまりにも大量のトラフィックが来るので、YJITによって行なわれているRubyコード実行量はYJITが使われてないものよりも世界全体で見て多くなったのではないかとCEOが言っていた。 この規模のトラフィックを捌くためにこのアプリは比較的よく

                        YJITで使ったRustの省メモリ化テクニック - Qiita
                      • YJIT: Dive into Ruby's JIT compiler written in Rust / Rust.Tokyo 2022

                        Rust.Tokyo 2022

                          YJIT: Dive into Ruby's JIT compiler written in Rust / Rust.Tokyo 2022
                        • Ruby 3.2.0dev にマージされた Rust YJIT をビルドする - koicの日記

                          YJIT の Rust 実装がマージされました。いまのところ今年の Shopify からの代表作ではと見ています (YJIT 自体は Ruby 3.1 で C 実装導入されている機能です) 。 github.com そういうわけで、現在の Ruby 3.2.0dev で YJIT を有効にする場合は、Rust の処理系 (1.60.0 1.58.1 以上) が必要になります。Rust のインストールに使う rustup については以下の公式ページなどを参照してください。 www.rust-lang.org YJIT はデフォルトではビルドされません (なので YJIT を使わないビルドであれば Rust 処理系は不要です) 。 デフォルトの YJIT なしの Ruby をビルドしている場合は --yjit オプションを渡しても、ruby: warning: Ruby was built w

                            Ruby 3.2.0dev にマージされた Rust YJIT をビルドする - koicの日記
                          • Rails APIサーバーで Ruby 3.2 の YJIT を有効化してみた。 - メドピア開発者ブログ

                            サーバーサイドエンジニアの内藤(@naitoh) です。 Rails で構築された小規模な APIサーバー(Rails の API モードで構築したもの)で、Ruby 3.2 の YJITを有効化する事で性能アップすることができましたので、喜びを分かち合いたく共有させて頂きます。 shopify.engineering We’re able to measure real speedups ranging from 5% to 10% (depending on time of day) on our total end-to-end request completion time measurements. YJIT を開発した Shopify では 5%から10%の処理速度の改善があったという事で、以前から弊社でも本番で運用を開始したかったのですが、比較的検証のし易い APIサーバーで

                              Rails APIサーバーで Ruby 3.2 の YJIT を有効化してみた。 - メドピア開発者ブログ
                            • Ruby 3.1正式リリース。Shopify開発のJITコンパイラ「YJIT」をメインラインにマージ

                              Ruby開発チームは、2021年12月25日にRuby 3.1.0の正式リリースを発表しました。 Rubyは毎年12月25日に新バージョンをリリースすることが恒例となっています。今回も一昨年のRuby 3.0に続いて新バージョンが登場しました。 Ruby 3.1でもっとも注目すべき新機能は、JITコンパイラの「YJIT」がメインラインにマージされたことでしょう。 大規模なRailsアプリでの性能向上を目指したYJIT RubyのJITコンパイラとしてはRuby 2.6から登場した「MJIT」がありますが、今回Ruby 3.1でマージされたYJITはMJITとは別のものです。 YJITは、ECサイト構築サービスで知られるShopifyが開発を進めてきたもので、Shopify自身が構築している大規模なRailsアプリケーションにおいて、より高い性能向上を目指して開発されてきました。 同社のブロ

                                Ruby 3.1正式リリース。Shopify開発のJITコンパイラ「YJIT」をメインラインにマージ
                              • Ruby 3.2+YJIT 本番運用カンパニーになりました #rubykaigi - Timee Product Team Blog

                                こんにちは。2023年1月に株式会社タイミーに入社したバックエンドエンジニアの id:euglena1215 です。 RubyKaigi 2023 がとうとう明日に迫ってきました。楽しみですね。 タイミーは RubyKaigi で初めてブース出展を行います。至らぬ点もあるかと思いますが、RubyKaigi を一緒に盛り上げていければと思っています!どうぞよろしくお願いします。 productpr.timee.co.jp 今回はタイミーが本番運用している Rails アプリケーションに対して Ruby 3.2.2 へのアップデートと YJIT の有効化を行い、パフォーマンスが大きく改善したことを紹介します。 RubyKaigi で「Ruby 3.2+YJIT 本番運用カンパニーです」と言いたいので粛々と進めている— てっぺー (@euglena1215) 2023年4月19日 前提 タイミー

                                  Ruby 3.2+YJIT 本番運用カンパニーになりました #rubykaigi - Timee Product Team Blog
                                • Alan Wu氏「YJITはRubyプロセス実行から終了まで全体のパフォーマンス向上を目指す」 ~RubyKaigi 2022 3日目キーノート | gihyo.jp

                                  CPUの世界では、内部の機構をフロントエンド(命令フェッチとデコード)とバックエンド(命令実行とメモリ)で分けることができます。つまりrailsbenchの実行においては、フロントエンドの処理がバックエンドの処理に対して間に合っておらず、全体としてCPUの性能を使い切れていないことになります。 また、RubyのプログラムとYJITが生成したコードの行き来(ジャンプ)が頻繁に行われていました。このジャンプが多いということは、それだけ実行のために参照するアドレスが多く、結果としてコードの実行パスが増えてしまいます。その結果、予測が失敗したパス(汚染されたパス)が大量に増えて、投機的実行の予測精度に影響を与えていました。 加えて初期のYJITでは、この汚染されたパスもコード生成に利用していたため、さらに問題を悪化させていました。 これらが原因となり、初期のYJITではrailsbenchのパフォ

                                    Alan Wu氏「YJITはRubyプロセス実行から終了まで全体のパフォーマンス向上を目指す」 ~RubyKaigi 2022 3日目キーノート | gihyo.jp
                                  • Ruby 3.3 YJITのメモリ管理とRJIT 〜すべてが新しくなった2つのJITを使いこなす | gihyo.jp

                                    Ruby 3.3リリース! 新機能解説 Ruby 3.3 YJITのメモリ管理とRJIT 〜すべてが新しくなった2つのJITを使いこなす 2023年12月25日、Ruby 3.3.0がリリースされ、様々な新機能が加えられました。本連載では実際に携わった皆さんにその新しいRubyをご紹介いただきます。 RubyはJust-In-Time(JIT)コンパイラという機能を備えており、これを有効化すると実行時に機械語を生成して様々な最適化が行なわれ、実行が高速になります。Ruby 3.3にはYJITとRJITという2つのJITコンパイラがあり、デフォルトでは無効になっていますが、それぞれ--yjitと--rjitで有効化できます。 この回では、Ruby 3.3でYJITの性能特性が変化した点や、YJITに新たに追加された便利な機能、またRJITはどのように使うものであるかについて解説します。 YJ

                                      Ruby 3.3 YJITのメモリ管理とRJIT 〜すべてが新しくなった2つのJITを使いこなす | gihyo.jp
                                    • Maxime Chevalier-Boisvertさん「Optimizing YJIT’s Performance, from Inception to Production」 ~RubyKaigi 2023 2日目キーノート | gihyo.jp

                                      RubyKaigi 2023 キーノートレポート Maxime Chevalier-Boisvertさん「Optimizing YJIT’s Performance, from Inception to Production」 ~RubyKaigi 2023 2日目キーノート 最近のRubyインタプリタの進化において非常に重要なトピックの一つが、JITコンパイラの登場です。特にShopifyのJITコンパイラチームを中心に開発されたYJITは、世の中で広く使われているRailsアプリケーションを有意に高速化できるJITコンパイラとして、既にproduction-readyであると評価されており、各所で採用が進んでいます。 RubyKaigi 2023 2日目のMaxime Chevalier-Boisvertさんによるキーノートでは、開発チームがYJITを開発するにあたってどういったアプロ

                                        Maxime Chevalier-Boisvertさん「Optimizing YJIT’s Performance, from Inception to Production」 ~RubyKaigi 2023 2日目キーノート | gihyo.jp
                                      • Ruby 3.3.0+YJIT本番運用カンパニーになりました - Timee Product Team Blog

                                        こんにちは。バックエンドエンジニアの須貝(@sugaishun)です。 今回はタイミーが本番運用しているRailsアプリケーションに対してRuby3.3.0へのアップデートを行った(YJITは引き続き有効なまま)のでその結果をご紹介したいと思います。 昨年弊社のid:euglena1215が書いたエントリーのRuby3.3.0版です。 tech.timee.co.jp 前提 タイミーのWebアプリケーションとしての特性は基本的には昨年と変わりありません。ですので、昨年の内容をそのまま引用させてもらいます。 タイミーを支えるバックエンドの Web API は多くのケースで Ruby の実行よりも DB がボトルネックの一般的な Rails アプリケーションです。JSON への serialize は active_model_serializers を利用しています。 今回の集計では API

                                          Ruby 3.3.0+YJIT本番運用カンパニーになりました - Timee Product Team Blog
                                        • Ruby 3.1.2 with YJIT vs Ruby 3.2.0-dev with YJIT - くりにっき

                                          tl;dr; モチベーション Ruby 3.2.0-devの何がすごいか Ruby 3.2.0-devでRust版のYJITを使う方法 計測対象のアプリケーション 使ったバージョン 比較 CPU ホスト全体 Ruby 3.1.2 + YJIT Ruby 3.2.0-dev + YJIT pumaのmasterプロセスとworkerプロセスをピックアップ Ruby 3.1.2 + YJIT Ruby 3.2.0-dev + YJIT Memory ホスト全体 Ruby 3.1.2 + YJIT Ruby 3.2.0-dev + YJIT pumaのmasterプロセスとworkerプロセスをピックアップ Ruby 3.1.2 + YJIT Ruby 3.2.0-dev + YJIT Ruby 3.2.0-devをデプロイした瞬間のグラフ スコア Ruby 3.1.2 + YJIT Ruby

                                            Ruby 3.1.2 with YJIT vs Ruby 3.2.0-dev with YJIT - くりにっき
                                          • YJIT: Building a New JIT Compiler for CRuby

                                            Opens in a new windowOpens an external siteOpens an external site in a new window The 1980s and 1990s saw the genesis of Perl, Ruby, Python, PHP, and JavaScript: interpreted, dynamically-typed programming languages which favored ease of use and flexibility over performance. In many ways, these programming languages are a product of the surrounding context. The 90s were the peak of the dot-com hype

                                              YJIT: Building a New JIT Compiler for CRuby
                                            • YJIT: CRuby向けの新しいJITコンパイラを構築する(翻訳)|TechRacho by BPS株式会社

                                              概要 Shopify Engineeringの許諾を得て翻訳・公開いたします。本記事は公開前にShopify Engineeringにレビューをいただいています。 英語記事: YJIT: Building a New JIT Compiler for CRuby — Development (2021) 原文公開日: 2021/10/14 原著者: Maxime Chevalier サイト: Shopify Engineering 画像は元記事のものです(追記2021/11/04: 冒頭イラストを削除いたしました)。 本記事はTwitterにて@shiroemonsshiromemonsさまからのリクエストを受けて翻訳いたしました。リクエストありがとうございます! なお、以下のissue #18229で、著者のMaxime Chevalierさんをコミッターに迎えるプロポーザルが出され、そ

                                                YJIT: CRuby向けの新しいJITコンパイラを構築する(翻訳)|TechRacho by BPS株式会社
                                              • Feature #18481: Porting YJIT to Rust (request for feedback) - Ruby master - Ruby Issue Tracking System

                                                TL;DR: The YJIT team wants to explore using Rust to help develop YJIT. The rest of CRuby will continue to build without Rust tools and building YJIT will remain optional. We’re currently exploring the possibility of porting YJIT to Rust and working on a small proof of concept that should be ready next month. The motivation behind this is that we are facing challenges in terms of code maintainabili

                                                • Ruby 3.3正式リリース。YJITコンパイラの大幅な性能向上、RubyのスレッドスケジューラとしてM:Nスレッドスケジューラ導入など新機能

                                                  Ruby開発チームは、2023年12月25日にRuby 3.3の正式リリースを発表しました。Rubyは毎年12月25日に新バージョンをリリースすることが恒例となっており、今回も予定通りに新バージョンが登場しています。 Ruby 3.3では、Shopifyが中心となって開発を進めてきたJITコンパイラのYJITコンパイラの大幅な性能向上、Rubyに同梱されているdefault gemとしてPrismパーサの導入、よりコストの小さなM:Nスレッドスケジューラの導入など新機能が加わっています。 Rubyはもともとインタプリタとして登場しましたが、現在では実行速度向上のためにJITコンパイラを取り入れるようになっています。 Ruby 3.1でメインラインにマージされたYJITコンパイラは、ECサイト構築サービスを提供するShopifyが、大規模なRailsアプリケーションにおいてより高い性能向上を

                                                    Ruby 3.3正式リリース。YJITコンパイラの大幅な性能向上、RubyのスレッドスケジューラとしてM:Nスレッドスケジューラ導入など新機能
                                                  • Ruby 3.2’s YJIT is Production-Ready

                                                    Opens in a new windowOpens an external siteOpens an external site in a new window Shopify and YJIT Back in July 2020, I joined the Ruby & Rails Infrastructure (R&RI) team at Shopify. Our team focuses on making sure that Ruby as well as Ruby on Rails, central to the infrastructure behind all Shopify stores and much of the modern web, run as smoothly and efficiently as possible. As part of the R&RI

                                                      Ruby 3.2’s YJIT is Production-Ready
                                                    • Rails 6.1のままRuby 3.2にアップデートし、YJITの恩恵を受ける

                                                      先日、携わっているサービスで一番大きいRailsアプリをRuby 3.2にアップデートし、YJITを有効化できました。 方針を検討した結果、今回はRails 6.1およびPsych 3系のままRuby 3.2にアップデートする戦略をとったため、その手順をまとめます。 先週にメインのサービスをRuby 3.2にしてYJITを有効にできました! 実際に速くなったし嬉しい大YJIT記念日だ🎉 https://t.co/Wkhc6fDfj9 — Hiroshi Shimoju (@shimoju_) July 19, 2023前提#今回のRailsアプリはサービスの機能がほぼすべて詰まっているモノリスで、歴史も8年と比較的長いです。 アップデート前のバージョンはRuby 3.0、Rails 6.1で、Psychは3系。 正攻法では、おおむね以下の手順でアップデートを進めていくことになります。 R

                                                      • Rails 7.1 + Ruby 3.3 で YJIT を有効化してパフォーマンス改善を行った結果

                                                        この記事の概要 こんにちは。PharmaX でエンジニアをしている諸岡(@hakoten)です。 この記事では、薬局DX事業部のバックエンドで採用しているRuby on Railsのアプリケーションについて、Rubyバージョンを3.3にアップグレードし、YJITを有効化した結果、どのようにパフォーマンスが向上したかをご紹介します。 現在のRuby on Railsのバージョンは、「7.1.3」になります。 YJITについての簡単な説明 YJITとは、CRuby内部に組み込まれた軽量のJIT機能で、遅延コード生成を行い、必要なメソッドを部分的にコンパイルすることで高速化を図る仕組みです。 (処理系は詳しくないため、ざっくりになってしまいすみません。。) Ruby 3系列の主要な機能の一つであり、3.1で導入され、3.2で正式にサポートされ、3.3においてさらに安定化が行われています。 詳しい

                                                          Rails 7.1 + Ruby 3.3 で YJIT を有効化してパフォーマンス改善を行った結果
                                                        • Ruby 3.3でのアップデートも要チェック!まちのコインでYJITを有効化したはなし - KAYAC engineers' blog

                                                          SREチームの長田です。 今回はRubyのJITコンパイラであるYJITのはなしです。 カヤックが開発・運用している地域通貨サービス「まちのコイン」は、Ruby on Railsを使用しています。 このまちのコインにてYJITを有効化し、その結果どのような影響があったのかを紹介します。 coin.machino.co YJITとは YJITは RubyのJITコンパイラです。 Ruby 3.1までは実験的な機能という位置づけでしたが、 Ruby 3.2から実用段階となりました。 Basic Block Versioning (BBV)を採用した遅延コンパイルにより、コード実行の高速化を図っているようです。 YJITそのものの話題については、今回は割愛させていただきます。 まちのコインの状況 まちのコインでは昨年6月末頃に Ruby 3.1.x から Ruby 3.2.x にアップデートを行

                                                            Ruby 3.3でのアップデートも要チェック!まちのコインでYJITを有効化したはなし - KAYAC engineers' blog
                                                          • YJIT Is the Most Memory-Efficient Ruby JIT

                                                            This year, the YJIT team and I have gotten a paper accepted at MPLR 2023 (Managed Programming Languages and Runtimes), which is now freely available through ACM open access. The paper, titled “Evaluating YJIT’s Performance in a Production Context: A Pragmatic Approach”, goes into details of the strategy taken to evaluate YJIT’s performance in a production context. One of our key findings, when com

                                                              YJIT Is the Most Memory-Efficient Ruby JIT
                                                            • RubyでYJITを有効にする場合はメモリ消費量に気をつけよう、という話(on Kubernetesでハマった) - inductor's blog

                                                              TL; DR YJITをDocker/Kubernetesでで有効にするには RUBY_YJIT_ENABLE=1 or RUBYOPT=--yjit YJITはデフォルトで256MBのメモリ領域を確保するため、全体のメモリ消費量が上がる Docker/Kubernetesでメモリ量を制御したい場合、RUBYOPT=--yjit-exec-mem-size=128のようにメモリ確保量を変更すればよい Ruby 3.1から使えるYJIT Ruby on Railsで動くアプリケーションでRubyのMJITが効果的でないことは色んなところで書かれていて、Ruby 3.1から実験的に導入されたShopify製のYJITでは対照的にRailsでのパフォーマンス改善が見込めるという期待があります。 ただしこのYJIT、動かすときには(JITなのでそりゃそうですが)デフォルトで256MiBのメモリを確

                                                                RubyでYJITを有効にする場合はメモリ消費量に気をつけよう、という話(on Kubernetesでハマった) - inductor's blog
                                                              • Our Experience Porting the YJIT Ruby Compiler to Rust

                                                                Opens in a new windowOpens an external siteOpens an external site in a new window Last year, my team at Shopify implemented YJIT, a new Just-In-Time (JIT) compiler for CRuby, which was recently upstreamed as part of Ruby 3.1. Because the CRuby codebase is implemented in C99, we also decided to implement YJIT in C99 so that integration with the rest of the CRuby codebase would be as simple as possi

                                                                  Our Experience Porting the YJIT Ruby Compiler to Rust
                                                                • 【Ruby1.8以前から】Rubyの処理系とJIT【Ruby3.2のYJITまで】 - Qiita

                                                                  はじめに Ruby3.2 で YJIT がついに実用段階になりました! なので YJIT について理解するために、JIT 導入前の Ruby、MJIT、そして YJIT についてそれぞれどんな特徴があるのか簡単に調べてみました。 Rubyの処理系 最初に Ruby の処理系についてです。処理系、特に 言語処理系 と呼ばれるものは、何らかのプログラミング言語を処理して実行可能にするためのソフトウェアです。Rubyの代表的な処理系は MRI (Matz's Ruby Interpreter) です。C言語で書かれた Ruby なので CRuby とも呼ばれます。 MRI 以外にも Ruby 処理系はたくさんあります。Ruby Association の以下のページに様々な処理系が紹介されています。 本記事では MRI (CRuby) の簡単なしくみから YJIT までを簡単に紹介します。 JI

                                                                    【Ruby1.8以前から】Rubyの処理系とJIT【Ruby3.2のYJITまで】 - Qiita
                                                                  • Benchmarking CRuby, MJIT, YJIT, JRuby and TruffleRuby

                                                                    Benchmarking CRuby, MJIT, YJIT, JRuby and TruffleRuby In this blog post we benchmark many Ruby versions and the latest Ruby Just-in-Time compilers (JITs) on the newest Ruby benchmark suite, yjit-bench. As a teaser, the geometric mean speedups compared to CRuby 3.1 on these 14 benchmarks are: MJIT 1.26x, YJIT 1.39x, JRuby 1.86x and TruffleRuby 6.23x. Read on to find more about the benchmarks and ga

                                                                      Benchmarking CRuby, MJIT, YJIT, JRuby and TruffleRuby
                                                                    • Ruby 3.2プレビュー2がリリース。WebAssembly版Ruby、ARM64版YJITなど対応

                                                                      Ruby 3.2プレビュー2がリリース。WebAssembly版Ruby、ARM64版YJITなど対応 Ruby 3.2ではWebAssembly版Rubyの登場が予定されており、これまでリリースされてきたLinux版やWindows版、Mac版などのRubyに加えて、WebブラウザなどWebAssemblyの実行環境でRubyランタイムを実行し、そこでRubyのプログラムを実行可能になることが期待されています。 参考:RubyのWebAssembly/WASIへの移植が実現、プレリリース版のバイナリ公開。RubyGemsにも対応 WebAssembly版のRubyでは、ファイルI/OなどOSごとに異なるAPIを抽象化する業界標準仕様であるWASI(WebAssembly System Interface)に対応しているため、WebブラウザだけでなくWasmtimeやWasmerといったス

                                                                        Ruby 3.2プレビュー2がリリース。WebAssembly版Ruby、ARM64版YJITなど対応
                                                                      • Monitoring YJIT in Production

                                                                        YJIT is a JIT compiler for Ruby that Shopify has developed. In 2022, we enabled YJIT in all storefront requests and observed ~10% speedups. Do you use an app performance monitor like NewRelic or Scout, or check your daily performance graphs? Here’s how you can make sure YJIT is doing what you want when you monitor. Use what you already have We work hard to make YJIT efficient on various workloads

                                                                          Monitoring YJIT in Production
                                                                        • YJIT: Building a New JIT Compiler Inside CRuby

                                                                          The 1980s and 1990s saw the genesis of Perl, Ruby, Python, PHP and JavaScript: interpreted, dynamically-typed programming languages which favored ease of use and flexibility over performance. In many ways, these programming languages are a product of the surrounding context. The 90s were the peak of the dot-com hype, and CPU clock speeds were still doubling roughly every 18 months. It looked like

                                                                            YJIT: Building a New JIT Compiler Inside CRuby
                                                                          • 【未解決】Ruby3.2.0にupdateしてYJITを有効化したら失敗した話

                                                                            株式会社ウェイブでcoolmicという日本のコミックを海外向けに配信するWEBサービスの開発を行なっております、こしけです! 今回が初投稿になります! 本日はRuby3.2系から実用段階になったYJITをcoolmicで有効にしたら失敗した話を書いていこうと思います。 導入するきっかけ coolmicでは様々な機能の追加や、既存のコードの負債の影響で処理速度が低下してきているのが課題でした。そんな中でRubyのupdateを行なっている最中にYJITという存在を知りました。 こちらの記事では導入後全体的に2-3割のレスポンスタイムの削減がされたという記載もあり、coolmicでもかなり恩恵がありそうなので導入してみようという流れになりました。 導入方法 Ruby3.2.0のDockerイメージにはYJITの組み込みが既にされているので、DockerfileのENVにRUBY_YJIT_EN

                                                                              【未解決】Ruby3.2.0にupdateしてYJITを有効化したら失敗した話
                                                                            • 「Ruby 3.2.0」が正式リリース ~WebAssembly/WASIをサポート、YJITは試験扱いを卒業/正規表現エンジンはReDoS攻撃への耐性を高める

                                                                                「Ruby 3.2.0」が正式リリース ~WebAssembly/WASIをサポート、YJITは試験扱いを卒業/正規表現エンジンはReDoS攻撃への耐性を高める
                                                                              • RubyKaigi 2023に参加した結果、RailsのYJITを有効化しパフォーマンス向上した - STORES Product Blog

                                                                                STORES 予約 でエンジニアリングマネージャーをしている natsume です。 今回はRubyKaigi 2023に参加して「うぉぉなんかやるぞぉ!」となった結果、STORES 予約 のバックエンドであるRailsアプリケーションをYJIT有効化しパフォーマンス向上できました。 動機からわかるとおり、YJIT有効化までノリと勢いでやりました。 影響されたセッションはDAY2のKeynoteである Optimizing YJIT’s Performance, from Inception to Production です。 (影響はされましたが内容は全然わからなかった。英語勉強する、絶対) rubykaigi.org 有効化の手順 STORES 予約 ではすでにRuby 3.2を利用していたのでかなりサクッとできました。 利用しているDocker imageで対応確認 Debian(s

                                                                                  RubyKaigi 2023に参加した結果、RailsのYJITを有効化しパフォーマンス向上した - STORES Product Blog
                                                                                • Ruby 3.3’s YJIT: Faster While Using Less Memory

                                                                                  This year, the YJIT team has been working hard to improve and optimize YJIT. We’re proud to say that the version of YJIT to be included with Ruby 3.3 is leaps and bounds ahead of Ruby 3.2’s. It provides better performance across the board, while also warming up faster and using less memory. The 3.3 release is also more robust, including a number of bug fixes along with an improved test suite. In t

                                                                                    Ruby 3.3’s YJIT: Faster While Using Less Memory

                                                                                  新着記事