YJITとZJITにはイカなる違いがあるのか?
by
yamanao
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
͋ͳͨͲͬͪʁ
Slide 2
Slide 2 text
ςετษڧͰ… ˒ աڈΛೖखͯ͠ରࡦ͢Δ ˒ ࢼݧൣғͷڭՊॻΛಡΉ
Slide 3
Slide 3 text
ςετษڧͰ… ˒ աڈΛೖखͯ͠ରࡦ͢Δ ˒ YJIT ˒ ࢼݧൣғͷڭՊॻΛಡΉ ˒ ZJIT
Slide 4
Slide 4 text
YJITͱZJITʹ ΠΧͳΔҧ͍͕͋Δͷ͔ʁ yamano
Slide 5
Slide 5 text
˒ yamano (@yamanaoRuby) ˒ େֶ 4 ੜ ˒ RubyKaigi 2 ճ About me
Slide 6
Slide 6 text
˒ ͕ࣗཧղ͍ͯ͠ΔൣғͰ͠·͢ ˒ ݶΒΕͨ࣋ͪ࣌ؒͷதͰɺΠϝʔδ͕ΘΔΑ͏ʹ ˒ RubyKaigi·ͰͷཧղͷҰॿʹ͍͚ͯͨͩ͠Ε ˒ ؾʹͳ͕ͬͨ͋Εੋඇ͝ࢦఠ͍ͩ͘͞ ˒ Ճචमਖ਼ͯ͠هࣄʹ͢ΔͭΓͰ͢ ͜ͷLTʹ͍ͭͯ
Slide 7
Slide 7 text
˒ Just-In-Time ͷུ ˒ ίʔυͰΑ࣮͘ߦ͞ΕΔܦ࿏ΛɺඞཁͳλΠϛϯάͰ ίϯύΠϧ͢Δ ˒ ͦͦRubyΠϯλϓϦλܕͷݴޠ ˒ ίϯύΠϧܕͷ͞Λ෦తʹऔΓೖΕΔ What’s JIT?
Slide 8
Slide 8 text
࣮ߦ࣌ͷใΛͱʹɺ Α͘ݱΕΔέʔεʹ߹Θͤͯہॴతʹ࠷దԽ͢Δ $ ruby --yjit hoge.rb ͷΑ͏ͳܗͰݕূͰ͖Δ YJIT
Slide 9
Slide 9 text
YJIT
Slide 10
Slide 10 text
YJIT Yʮcount͕IntegerͰདྷΔࣄ͕ଟ͍ͳ…ʯ YʮInteger͕དྷΔલఏͰίϯύΠϧͯ͠ɺ ɹ ߴʹॲཧͰ͖ΔΑ͏ʹ͓ͯ͜͠͏ʂʯ
Slide 11
Slide 11 text
ϝιου୯ҐͰɺ෦Ͱѻ͍͍͢ܗʹ͔ͯ͠Β ˒ ͷྲྀΕ ˒ ੍ޚϑϩʔ ͳͲͷใΛͱʹ࠷దԽ͢Δ $ ruby --zjit hoge.rb ͷΑ͏ͳܗͰݕূͰ͖Δ ZJIT
Slide 12
Slide 12 text
ZJIT
Slide 13
Slide 13 text
ZJIT ZʮશମΛݟͯΈΑ͏ʯ Zʮ͔ͯ͠͠ɺ ɹ ݁ہ͜Ε count * 200 + 500 Ͱʁʯ ※ΠϝʔδͰ͢
Slide 14
Slide 14 text
ςετษڧͷͨͱ͑ ˒ YJIT ˒ աڈͰରࡦΛ͢ΔͱϐϯϙΠϯτʹֶश͢ΔͷͰૣ͍ ˒ ZJIT ˒ ڭՊॻΛಡΜͰରࡦΛ͢ΔͱΑΓཧ͞ΕͨࣝʹͳΔ ͲͪΒ͕ྑ͍ͱ͍͏Ͱͳ͘ɺಘҙͳํੑ͕ҧ͏
Slide 15
Slide 15 text
˒ ZJITͷதؒදݱΛΈͯΈΔ ˒ ΠϯλϓϦλͷΈɾYJITɾZJITͷൺֱ ͳͲΛߦͬͨ ͞ΘͬͯΈͨ
Slide 16
Slide 16 text
$ ruby --zjit --zjit-dump-hir-init total_price.rb $ ruby --zjit --zjit-dump-hir total_price.rb ˒ ઌఔͷ total_price ؔΛෳճ࣮ߦ͢ΔίʔυͰݕূ ZJITͷதؒදݱ
Slide 17
Slide 17 text
˒ ࠷దԽલ v34:BasicObject = Send v16, :*, v23 v41:BasicObject = Send v34, :+, v27 Rubyͷϝιουݺͼग़͠Λ͍ͯ͠Δ ˒ ࠷దԽޙ v50:Fixnum = FixnumMult v49, v23 v53:Fixnum = FixnumAdd v50, v27 ΑΓ۩ମతͳԋࢉͷܗʹͳ͍ͬͯΔ ZJITͷதؒදݱ
Slide 18
Slide 18 text
͓·͚
Slide 19
Slide 19 text
˒ εʔπέʔεҎ্ۭͷঢ়ଶͰ ˒ ϊϕϧςΟͰຒ·Δ ˒ ࡢεʔπέʔε͕ຒ·্ͬͨͰ ख࣋ͪͨ͠ ͓·͚