Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
YJITとZJITにはイカなる違いがあるのか?
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
yamanao
April 12, 2026
Programming
550
0
Share
YJITとZJITにはイカなる違いがあるのか?
2026-04-10
ルールルルルルRubyKaigi 2026事前勉強会
https://smarthr.connpass.com/event/387103/
yamanao
April 12, 2026
More Decks by yamanao
See All by yamanao
大学生のうちにやっておきたいこと
nakiym
0
20
念願の初参加! RubyKaigiで鯛験したこと
nakiym
0
760
私のENECHANGEでのインターンシップと今後
nakiym
0
580
Other Decks in Programming
See All in Programming
1人1案件のプロダクトエンジニア時代に、"プロセス監督"としてチャレンジしたこと
non0113
0
300
密結合なバックエンドから TypeScript のコードを生成する
kemuridama
1
340
Swiftのレキシカルスコープ管理
kntkymt
0
190
~ 秘伝のタレ化した『神スプシ』と戦う ~ 関数型パラダイムで壊れない仕組みへ
h0r15h0
1
130
TypeScriptだけでAIエージェントを作る フロント・エージェント・インフラのフルスタック実践
har1101
6
990
These Five Tricks Can Make Your Apps Greener, Cheaper, & Nicer
hollycummins
0
180
Copilot CLI の継戦能力を高める コンテキスト管理
nozomutu
1
930
SPMマルチモジュールで テストカバレッジを取得する技法
yosshi4486
0
120
関係性から理解する"同一性"の型用語たち
pvcresin
2
520
Oxlintはいかにしてtsgolintのlint ruleを呼び出しているのか
syumai
1
480
Sans tests, vos agents ne sont pas fiables
nabondance
0
160
誰も頼んでない機能を出荷した話
zekutax
0
130
Featured
See All Featured
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
61
44k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
530
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.2k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
WENDY [Excerpt]
tessaabrams
10
37k
Making the Leap to Tech Lead
cromwellryan
135
9.8k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
150
A better future with KSS
kneath
240
18k
Optimizing for Happiness
mojombo
378
71k
Practical Orchestrator
shlominoach
191
11k
Statistics for Hackers
jakevdp
799
230k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
260
Transcript
͋ͳͨͲͬͪʁ
ςετษڧͰ… ˒ աڈΛೖखͯ͠ରࡦ͢Δ ˒ ࢼݧൣғͷڭՊॻΛಡΉ
ςετษڧͰ… ˒ աڈΛೖखͯ͠ରࡦ͢Δ ˒ YJIT ˒ ࢼݧൣғͷڭՊॻΛಡΉ ˒ ZJIT
YJITͱZJITʹ ΠΧͳΔҧ͍͕͋Δͷ͔ʁ yamano
˒ yamano (@yamanaoRuby) ˒ େֶ 4 ੜ ˒ RubyKaigi
2 ճ About me
˒ ͕ࣗཧղ͍ͯ͠ΔൣғͰ͠·͢ ˒ ݶΒΕͨ࣋ͪ࣌ؒͷதͰɺΠϝʔδ͕ΘΔΑ͏ʹ ˒ RubyKaigi·ͰͷཧղͷҰॿʹ͍͚ͯͨͩ͠Ε ˒ ؾʹͳ͕ͬͨ͋Εੋඇ͝ࢦఠ͍ͩ͘͞ ˒ Ճචमਖ਼ͯ͠هࣄʹ͢ΔͭΓͰ͢
͜ͷLTʹ͍ͭͯ
˒ Just-In-Time ͷུ ˒ ίʔυͰΑ࣮͘ߦ͞ΕΔܦ࿏ΛɺඞཁͳλΠϛϯάͰ ίϯύΠϧ͢Δ ˒ ͦͦRubyΠϯλϓϦλܕͷݴޠ ˒ ίϯύΠϧܕͷ͞Λ෦తʹऔΓೖΕΔ
What’s JIT?
࣮ߦ࣌ͷใΛͱʹɺ Α͘ݱΕΔέʔεʹ߹Θͤͯہॴతʹ࠷దԽ͢Δ $ ruby --yjit hoge.rb ͷΑ͏ͳܗͰݕূͰ͖Δ YJIT
YJIT
YJIT Yʮcount͕IntegerͰདྷΔࣄ͕ଟ͍ͳ…ʯ YʮInteger͕དྷΔલఏͰίϯύΠϧͯ͠ɺ ɹ ߴʹॲཧͰ͖ΔΑ͏ʹ͓ͯ͜͠͏ʂʯ
ϝιου୯ҐͰɺ෦Ͱѻ͍͍͢ܗʹ͔ͯ͠Β ˒ ͷྲྀΕ ˒ ੍ޚϑϩʔ ͳͲͷใΛͱʹ࠷దԽ͢Δ $ ruby --zjit hoge.rb
ͷΑ͏ͳܗͰݕূͰ͖Δ ZJIT
ZJIT
ZJIT ZʮશମΛݟͯΈΑ͏ʯ Zʮ͔ͯ͠͠ɺ ɹ ݁ہ͜Ε count * 200 + 500
Ͱʁʯ ※ΠϝʔδͰ͢
ςετษڧͷͨͱ͑ ˒ YJIT ˒ աڈͰରࡦΛ͢ΔͱϐϯϙΠϯτʹֶश͢ΔͷͰૣ͍ ˒ ZJIT ˒ ڭՊॻΛಡΜͰରࡦΛ͢ΔͱΑΓཧ͞ΕͨࣝʹͳΔ ͲͪΒ͕ྑ͍ͱ͍͏Ͱͳ͘ɺಘҙͳํੑ͕ҧ͏
˒ ZJITͷதؒදݱΛΈͯΈΔ ˒ ΠϯλϓϦλͷΈɾYJITɾZJITͷൺֱ ͳͲΛߦͬͨ ͞ΘͬͯΈͨ
$ ruby --zjit --zjit-dump-hir-init total_price.rb $ ruby --zjit --zjit-dump-hir total_price.rb
˒ ઌఔͷ total_price ؔΛෳճ࣮ߦ͢ΔίʔυͰݕূ ZJITͷதؒදݱ
˒ ࠷దԽલ v34:BasicObject = Send v16, :*, v23 v41:BasicObject =
Send v34, :+, v27 Rubyͷϝιουݺͼग़͠Λ͍ͯ͠Δ ˒ ࠷దԽޙ v50:Fixnum = FixnumMult v49, v23 v53:Fixnum = FixnumAdd v50, v27 ΑΓ۩ମతͳԋࢉͷܗʹͳ͍ͬͯΔ ZJITͷதؒදݱ
͓·͚
˒ εʔπέʔεҎ্ۭͷঢ়ଶͰ ˒ ϊϕϧςΟͰຒ·Δ ˒ ࡢεʔπέʔε͕ຒ·্ͬͨͰ ख࣋ͪͨ͠ ͓·͚