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
yamanao
April 12, 2026
Programming
100
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
12
念願の初参加! RubyKaigiで鯛験したこと
nakiym
0
680
私のENECHANGEでのインターンシップと今後
nakiym
0
550
Other Decks in Programming
See All in Programming
Symfonyの特性(設計思想)を手軽に活かす特性(trait)
ickx
0
130
安いハードウェアでVulkan
fadis
1
920
SkillがSkillを生む:QA観点出しを自動化した
sontixyou
6
3.1k
ファインチューニングせずメインコンペを解く方法
pokutuna
0
270
仕様漏れ実装漏れをなくすトレーサビリティAI基盤のご紹介
orgachem
PRO
8
5k
Geminiをパートナーに神社DXシステムを個人開発した話(いなめぐDX 開発振り返り)
fujiba
0
140
AI時代の脳疲弊と向き合う ~言語学としてのPHP~
sakuraikotone
1
1.8k
メッセージングを利用して時間的結合を分離しよう #phperkaigi
kajitack
3
560
Vibe하게 만드는 Flutter GenUI App With ADK , 박제창, BWAI Incheon 2026
itsmedreamwalker
0
540
事業会社でのセキュリティ長期インターンについて
masachikaura
0
230
「効かない!」依存性注入(DI)を活用したAPI Platformのエラーハンドリング奮闘記
mkmk884
0
310
まかせられるPM・まかせられないPM / DevTech GUILD Meetup
yusukemukoyama
0
110
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
260
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
100
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
The Cost Of JavaScript in 2023
addyosmani
55
9.8k
How to train your dragon (web standard)
notwaldorf
97
6.6k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
130
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
150
How Software Deployment tools have changed in the past 20 years
geshan
0
33k
Agile that works and the tools we love
rasmusluckow
331
21k
We Have a Design System, Now What?
morganepeng
55
8.1k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
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ͷதؒදݱ
͓·͚
˒ εʔπέʔεҎ্ۭͷঢ়ଶͰ ˒ ϊϕϧςΟͰຒ·Δ ˒ ࡢεʔπέʔε͕ຒ·্ͬͨͰ ख࣋ͪͨ͠ ͓·͚