タグ

JITに関するYassLabのブックマーク (11)

  • 効果絶大!YJITがRailsアプリにもたらす変化 #パフォーマンス #Ruby #Rails #YJIT - クラウドワークス エンジニアブログ

    はじめに crowdworks.jp のジャンヌチームで主にバックエンドの技術的負債の解消に取り組んでいる @kotarou1192 です。 crowdworks.jp を支える Rails アプリケーションで YJIT を有効化しました。 記事では、有効化の背景と、1週間の観察で得られたパフォーマンスの変化を報告します。 YJIT とは YJITRuby 3.1 で実験的に導入された JIT コンパイラです。 Ruby 3.2 で番利用可能な品質となり、Ruby 3.3 ではさらなるパフォーマンス改善が加えられています。 Lazy Basic Block Versioning (LBBV) という手法により、実行時にコードを Basic Block 単位で遅延的にネイティブコードへコンパイルすることで、インタプリタ実行と比較して高速化を実現します。 Ruby 3.3 における

    効果絶大!YJITがRailsアプリにもたらす変化 #パフォーマンス #Ruby #Rails #YJIT - クラウドワークス エンジニアブログ
    YassLab
    YassLab 2026/02/20
    "Shopify は Ruby 3.3 の YJIT により本番コードが15%高速化 / 今回の Puma における約12〜13%の改善はこれと概ね同程度であり、大規模 Rails アプリケーションにおける YJIT の効果として妥当 / 最大のボトルネックはやはり RDBMS の操作"
  • 5年振りのメジャーバージョンアップとなるRuby 4.0正式リリース、クラスの定義などを隔離するRuby Box、新JITコンパイラ「ZJIT」搭載など

    5年振りのメジャーバージョンアップとなるRuby 4.0正式リリース、クラスの定義などを隔離するRuby Box、新JITコンパイラ「ZJIT」搭載など Ruby開発チームは2025年12月25日、Ruby 4.0の正式リリースを発表しました。 Rubyは毎年12月25日に新バージョンをリリースすることが恒例となっており、2024年も予定通りに新バージョンが登場しました。しかも今回は2020年にRuby 3.0が登場して以来5年振りのメジャーバージョンアップとなりました。 Rubyはまつもとゆきひろ氏により1993年に開発が始められたプログラミング言語です。シンプルで生産性の高いプログラムを書くことができることなどを特長とし、Ruby on RailsRails)と呼ばれるWebアプリケーションを容易に構築できるフレームワークを備えていることで人気のプログラミング言語です。 Ruby 4

    5年振りのメジャーバージョンアップとなるRuby 4.0正式リリース、クラスの定義などを隔離するRuby Box、新JITコンパイラ「ZJIT」搭載など
    YassLab
    YassLab 2026/01/05
    “新JITコンパイラ「ZJIT」搭載 - YJITの開発チームが開発した、実験的なメソッドベースの新しいJITコンパイラ「ZJIT」が搭載されました。... ZJITはそのYJITコンパイラの後継として、さらなる性能向上を目指しています。”
  • Tiny JITs for a Faster FFI

    Can we have a faster FFI for CRuby? Yes. Can we have a faster FFI for CRuby? I love programming in Ruby, and I advocate for people to write as much Ruby as possible. But sometimes you really really must call out to native code. Even in those cases, I encourage people to write as much Ruby as possible, especially because YJIT can optimize Ruby code but not C code. Taken to its logical extreme, this

    Tiny JITs for a Faster FFI
    YassLab
    YassLab 2025/02/18
    “I think this is very exciting because it means that we can achieve the same speeds (or even better) than a C extension while maintaining the “write as much Ruby as possible” philosophy.”
  • 福岡Rubyist会議04、やりますよ!|Uchio Kondo

    9月7日にやります。もうすぐあと一ヶ月! まず、イベント自体の紹介の前に、福岡でRubyのイベントを―カンファレンスをやるということに関するナラティブを形成したいのでそれを書きます。 §1. 独断と偏見による福岡でのRubyコミュニティの流れまとめ福岡県は行政としてRubyでの開発や創業に力を入れていることは知られていますが、市井のRubyistとして、プログラマとしてRubyのことを話そうじゃないかという流れのコミュニティイベントも粛々とやっていっておりました。 (もちろん福岡県/福岡市ともにRuby関連のコミュニティ行事に多大な協力を継続的にいただいていますが、それはそれとして俺たちはボトムアップでもやってる感を出していきたい) 福岡ではRails Girlsも3回(北九州も含めば福岡県で4回!)開催、またFukuoka.rbのようなコミュニティミートアップもなんとか途切れずやってき

    福岡Rubyist会議04、やりますよ!|Uchio Kondo
    YassLab
    YassLab 2024/08/04
    "プログラミング言語自体の開発に関するトピック(レキサ、パーサ、コンパイラ、リンカ、VM、JIT、型、などなど…)は、ソフトウェア開発の一丁目一番地みたいな内容 / 学ぶことで地力が強まり、また汎用的なトピック"
  • YJIT Makes Rails 1.7x Faster

    YassLab
    YassLab 2024/05/17
    “Why does YJIT make Ruby so much faster? In this talk, you’ll explore the latest YJIT optimizations that have a huge impact on your application’s performance. Once you understand what you're missing out on, you can't help but enable YJIT. Back ”
  • Ruby 3.3.0-preview1 Released | Ruby

    YassLab
    YassLab 2023/05/24
    “We are pleased to announce the release of Ruby 3.3.0-preview1. Ruby 3.3 adds a new pure-Ruby JIT compiler named RJIT, uses Lrama as a parser generator, and many performance improvements especially YJIT.”
  • Mojoは「C言語のように速いPython」なのか - k0kubun's blog

    LLVMやSwiftを作ったChris LattnerがCEOをやっている会社が、Pythonの使用感とC言語並の性能を併せ持つ言語としてMojoをアナウンスした。 まだ手元で試せる状態でリリースされてはいないが、最大35000倍Pythonより速いという。 Mojo🔥 combines the usability of Python with the performance of C, unlocking unparalleled programmability of AI hardware and extensibility of AI models. Also, it's up to 35000x faster than Python 🤯 and … deploys 🏎 pic.twitter.com/tjT09U4F80— Modular (@Modular_AI) May

    Mojoは「C言語のように速いPython」なのか - k0kubun's blog
    YassLab
    YassLab 2023/05/06
    “AI開発のために高速なコードが書けるというのはいいものだと思うし、何よりLLVMやSwiftを作ったChris Lattnerがやっているというのがアツいところなので、正式リリースに期待”
  • RJIT: RubyでRubyのJITコンパイラを書いた - k0kubun's blog

    僕はRustRubyのJITを書く仕事をしているのだが、去年の12月くらいから、趣味ではRubyRubyのJITを書いている。 それまではC言語でコード生成を行なうMJITを5年くらいメンテしていたのだが、先月、Rubyで機械語を直接アセンブルするRJITに差し替えた。 github.com なので、今Rubyのmasterブランチには、会社で業務として開発しているRust製のYJITと、僕が趣味で開発しているRuby製のRJITの2つのJITコンパイラが存在している。余談だが、JITの開発をしすぎてRubyの作者であるまつもとさんのコミット数を最近抜いた。 なぜMJITをやめたのか MJITも結構がんばっていて、去年開発していたRuby 3.2ではMJITのコンパイラの実装をCからRubyにフルスクラッチした上、バックグラウンド処理をpthreadからfork + SIGCHLDで行

    RJIT: RubyでRubyのJITコンパイラを書いた - k0kubun's blog
    YassLab
    YassLab 2023/04/07
    "本番環境では引き続きYJITを使うことが推奨される。YJITの開発ではコンパイル速度やメモリ消費量に細心の注意が払われており、ベンチマークの改善に即座に向上しない複雑な実装はマージしないで塩漬けにする傾向にある
  • RubyKaigi 2022に参加しました

    3行まとめ 2022 9/8 - 9/10に三重県にて開催されたRubyKaigi 2022に現地参加しました そこで感じたことを書きます プログラミング言語に手を入れて改善していくということに興味を持ち、日でそれをやるにはRubyはだいぶ良さそうな環境だと感じました 概要 2022年9/8-9/10に、三重県津市の三重県総合文化センターで開催されたRubyKaigi 2022に参加して来ました。 この会議はオフラインとオンラインのハイブリッド開催でした。私は、所属している株式会社iCAREがスポンサーをしていることもあり、現地参加、スポンサーブースのスタッフも行いました。 ここまで大規模なオフラインの会議の参加は初めてでしたし、オフラインイベントへの参加も、コロナの影響もあり随分久しぶりでした。 現地で聞いた様々な講演の感想や、その他感じたことなどを書いていきます。 興味深かった講演と

    RubyKaigi 2022に参加しました
    YassLab
    YassLab 2022/09/13
    “プログラミング言語に手を入れて改善していくということに興味を持ち、日本でそれをやるにはRubyはだいぶ良さそうな環境だと感じました”
  • RubyKaigi 2022 セッションレポート Day 1 - メドピア開発者ブログ

    バックエンドエンジニアの田中悠大(@ytnk531)です。 RubyKaigi 2022で三重県に来ています。1日目(9/8)に聞いたセッションについて、簡単に紹介させていただきます。 Ruby meets WebAssembly Ruby meets WebAssembly - RubyKaigi 2022 RubyWebAssembly (WASM) 対応についての発表でした。WebAssemblyの基礎から、WASM対応のテクニカルな難しさまで、非常にわかりやすく丁寧に説明されており、聴きごたえのある素晴らしい発表でした。 特にデモがおもしろく、思わずスゴイ!とうなってしまうものばかりでした。 RubyWASM対応にあたっては、ExceptionやFiberで利用する特殊な制御をWASM上で再現するのに特に苦労されたそうです。Asyncifyという技術を使うことで、うまく解決でき

    RubyKaigi 2022 セッションレポート Day 1 - メドピア開発者ブログ
    YassLab
    YassLab 2022/09/13
    “現状のYJITは、YARV命令列からx86-64用のアセンブラを生成し、そこからマシンコードを生成 / ARM64でも動くようにするために、直接ARM64のアセンブラを生成するのではなく、中間表現を生成するアプローチをとった”
  • 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
    YassLab
    YassLab 2022/08/16
    “「組み合わせ上は存在するコードバージョンの多くが実行時に殆ど現れない」という現実のコードへの鋭い観察に基づいたシンプルなアプローチ / 動的言語の書き味は変えないまま、型固有の最適化されたコードを生成”
  • 1