Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RubyとJIT
Search
na-o-ys
January 31, 2018
Programming
0
170
RubyとJIT
na-o-ys
January 31, 2018
Tweet
Share
More Decks by na-o-ys
See All by na-o-ys
IoTと監視
naoys
1
800
将棋盤を画像認識したかった
naoys
0
1.6k
Rust で乗り換え案内
naoys
0
630
疎行列と Jaccard 類似度の高速計算
naoys
1
640
有理数集合の濃度
naoys
2
140
YARVの最適化について調べた
naoys
0
140
転職会議サービスのAWS移行記録
naoys
0
74
Anonymous Recursion in C++
naoys
0
430
入門AlphaGo
naoys
5
3.8k
Other Decks in Programming
See All in Programming
Level up your Gemini CLI - D&D Style!
palladius
1
180
Full-Cycle Reactivity in Angular: SignalStore mit Signal Forms und Resources
manfredsteyer
PRO
0
100
TypeScript 5.9 で使えるようになった import defer でパフォーマンス最適化を実現する
bicstone
1
1.1k
tsgolintはいかにしてtypescript-goの非公開APIを呼び出しているのか
syumai
5
1.6k
sbt 2
xuwei_k
0
200
[堅牢.py #1] テストを書かない研究者に送る、最初にテストを書く実験コード入門 / Let's start your ML project by writing tests
shunk031
12
7k
手が足りない!兼業データエンジニアに必要だったアーキテクチャと立ち回り
zinkosuke
0
430
大体よく分かるscala.collection.immutable.HashMap ~ Compressed Hash-Array Mapped Prefix-tree (CHAMP) ~
matsu_chara
1
210
「文字列→日付」の落とし穴 〜Ruby Date.parseの意外な挙動〜
sg4k0
0
370
AIコーディングエージェント(Manus)
kondai24
0
130
バックエンドエンジニアによる Amebaブログ K8s 基盤への CronJobの導入・運用経験
sunabig
0
140
CSC305 Lecture 17
javiergs
PRO
0
280
Featured
See All Featured
Building an army of robots
kneath
306
46k
Raft: Consensus for Rubyists
vanstee
140
7.2k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Leading Effective Engineering Teams in the AI Era
addyosmani
8
1.3k
RailsConf 2023
tenderlove
30
1.3k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.4k
Six Lessons from altMBA
skipperchong
29
4.1k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
380
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.3k
Documentation Writing (for coders)
carmenintech
76
5.2k
Embracing the Ebb and Flow
colly
88
4.9k
Transcript
Ruby, YARV, ͦͯ͠JIT 2018/01/29 @na_o_ys
࣌ḪΓ
Ruby 3x3 @RubyKaigi 2015 https://www.youtube.com/watch?v=E9bO1uqs4Oc
Evan Phoenix ʮJITͨ͠Β?ʯ @RubyKaigi 2015 • Evan Phoenix • Rubinius
ͷ࡞ऀ • Rubinius Ͱ LLVM Λར༻ͨ͠ JIT Λ࣮ࡁ Έͩͬͨ
ͦͯ͠ 2 ޙ, 2018/1ݱࡏ
͍͔ͭ͘ͷ JIT ϓϩδΣΫτ • MJIT • Vladimir Makarovࢯ • YARVΛ٫͠,
ϨδελϕʔεVMʹ • CίʔυΛಈతੜ͠, ࠷దԽ, ίϯύΠϧ • YARV-MJIT • k0kubunࢯ • YARV(ελοΫϕʔεVM)ͷ··, MJITͷJITػߏΛಋೖ
YARVͱ (͓͞Β͍) • Ruby 1.9.0 Ͱ࠾༻͞ΕͨRubyॲཧܥ • ߴԽΛୡ • https://speakerdeck.com/naoys/yarvfalsezui-
shi-hua-nituitediao-beta
MJIT
MJIT (1/2) • https://github.com/vnmakarov/ruby/tree/rtl_mjit_branch • YARV٫ • ελοΫϕʔεVMͷYARVΛࣺͯ, ϨδελϕʔεVMΛߏங •
Method JIT • ϝιου୯ҐͰͷJITίϯύΠϧ • CίʔυΛಈతੜ͠, ࠷దԽ & ίϯύΠϧ͢Δ
MJIT (2/2) • ͳͥϨδελϕʔεVM͔? • ୈҰʹ, ίʔυղੳͱ࠷దԽΛߦ͏ͨΊ • ελοΫϕʔε͜Εʹద͞ͳ͍ •
ୈೋʹ, ॲཧͷߴԽͷͨΊ • ελοΫϕʔεϝϞϦͷແବͳར༻͕ଟ͍ • ελοΫϕʔε໋ྩߦ͕ଟ͘ͳΔ
MJITͷਐḿ • RubyKaigi 2017 (2017/10) • http://gihyo.jp/news/report/01/rubykaigi2017/0003? page=2 • TL;DR
• Ruby 2 ͱൺ͔ͯͳΓͷߴԽ (ᐆດ) Λୡ • ʮ࣮ͱͯ͠ख़͢Δʹ͋ͱ1΄΅͔͔ΔͩΖ͏ʯ
YARV-MJIT
YARV-MJIT • MJITͷJITػߏͷҰ෦͚ͩΛಋೖ͢Δ • YARV͍ଓ͚Δ • ͶΒ͍ • 1. ϨδελϕʔεͷϝϦοτΛ໌֬Խ
• ελοΫϕʔεͩͱ࣮ࡍͲΕ͘Β͍͍ɾਏ͍ʁ • 2. MJITͷҠߦΛεϜʔζʹ͢Δ • JIT͕ೖΔλΠϛϯάͰ͍͖ͳΓYARV -> ϨδελϕʔεVMͷϦϓϨʔε ͕͓͖Δͷා͘ͳ͍ʁ
YARV-MJITͷਐḿ • https://github.com/ruby/ruby/pull/1782 • https://bugs.ruby-lang.org/issues/14235 • TL;DR • Ruby 2.6
Ͱग़͍ͨ͠ • -j, —jit ΦϓγϣϯͰ༗ޮɾແޮΓସ͑ΒΕΔ
·ͱΊ • RubyʹJIT͕ೖΔʂ • ͍·ͷͱ͜Ζͷະདྷ༧ਤ • ·ͣ͡Ίʹ, YARVΛҡ࣋ͨ͠··ͰJIT͕ೖΔ • Ruby
2.6 ʹͰʁ • ͍ͦͯۙ͠কདྷ, YARV͕Ϩδελϕʔεʹஔ͖͑ΒΕͨ ΑΓ͍JIT͕ೖΔ