rblineprof
ϝϦοτɾڧΈ
➤ Ruby͔CͰఆٛ͞Εͨϝιουͷݺͼग़͠Ͱಈ͍͍ͯΔϓ
ϩάϥϜ͓͓ΉͶ͍͍ײ͡ʹܭଌͰ͖Δ
➤ ࡞ऀஊ: This profiler is great for improving performance
of rails templates and controllers.
➤ ग़ྗ͕ms୯ҐͷͨΊײతͰɺݟΔͷָ͕
➤ ͱͯॏཁɺܭଌ݁ՌΛݟΔͷ͕େมͩͱ͕࣌ؒແବʹ
➤ ISUCONͱ͔ʹ͏ͷΑͦ͞͏
༨ܭͳActiveRecord::BaseΠϯελϯεͷੜ
➤ ·ͩڐͤΔౕ
͜͏Ͱ ͢ Ͷ
S E L E C T * ͢ Δ ཧ ༝ ͕ ͳ ͍ ɺ e x i s t s ? ͷ ํ ͕ ҙ ਤ ͕ Θ Γ ͢ ͍
ͱ ʹ ͔ ͘ A c t i v e R e c o rd : : B a s e ͷ Π ϯελ ϯε Λ ࡞ Δ ͷ ॏ ͍ ͔ Β ؾ ʹ ͳ Δ
Slide 71
Slide 71 text
༨ܭͳActiveRecord::BaseΠϯελϯεͷੜ
➤ ݸਓతʹશ͘աͰ͖ͳౕ͍ (ͳ͓ Rails 4.x ࣌ͷ)
ߜ Γ ࠐ Έ ͷ ͨ Ί ͷ L E F T J O I N ʹ
i n c l u d e s Λ ͍ ग़ ͢ ഐ
Slide 72
Slide 72 text
༨ܭͳActiveRecord::BaseΠϯελϯεͷੜ
➤ ݸਓతʹશ͘աͰ͖ͳౕ͍ (ͳ͓ Rails 4.x ࣌ͷ)
ͤ
ߜ Γ ࠐ Έ ͷ ͨ Ί ͷ L E F T J O I N ʹ
i n c l u d e s Λ ͍ ग़ ͢ ഐ
͓͍ͪ͡ΌΜڈͷTokyuRubyձٞͰಉͨ͡͠Ͱ͠ΐ (ຊʹؾʹ͍Βͳ͍ͷͰ2ճൃද͠·ͨ͠)
E a g e r l o a d i n g ͷ ͨ Ί ͷ ϝ ι ο υ Λ ޡ ͬ ͨ ༻ ్ ʹ ͏ ͷ Ί · ͠ ΐ ͏
Θ Ε ͳ ͍ A c t i v e R e c o rd : : B a s e Π ϯε λ ϯε ͕ Ͳ Μ Ͳ Μ ࡞ Β Ε Δ
༨ܭͳActiveRecord::BaseΠϯελϯεͷੜ
➤ ͜ͷίʔυΛϨϏϡʔͯͨ࣌͠ɺ#left_outer_joins
(چ #outer_joins) ͕ೖͬͯཉͯ͘͠ํ͕ͳ͔ͬͨ
Ϩ Ϗϡ ʔ ͯ͠ ͨ Β Α ͘Θ ͔ Β Μ
͜ ͱ ͬͯ Δ ਓ ͍ ͨ …
ͳ ΜͰ ͜ Ε ೖ ͬͯ ͳ ͍ ͷ …
͑ͬ # o u t e r _ j o i n s → # l e f t _ o u t e r _ j o i n s ʹ
Ϧ ω ʔϜ ? ͢ ͗ ͯ Θ ͳ ͘ ͳ ͍ ?
( ͜ Ε ͕ ೖ ͬ ͨ ޙ ʹ # l e f t _ j o i n s ͷ a l i a s ೖ Ε ͨ )
Slide 75
Slide 75 text
༨ܭͳActiveRecord::BaseΠϯελϯεͷੜ
➤ Rails 5ɺਓྨօฏ
ߜ Γ ࠐ Έ ͷ ͨ Ί ͷ L E F T J O I N ʹ
i n c l u d e s Λ ͍ ग़ ͢ ഐ
Ͱɺ(೦ͳ͕Β)૯߹తʹݟͨΒ͜ͷgemΘͳ͍ํ͕ଟอकָͰ͢
͜ ͍ ͭ ͕ A c t i v e R e c o rd ͷ ෦ A P I ʹ
৮ ͬͯ ͍ Δ ( ৮ Β ͟ Δ Λ ͑ ͳ ͍ ) ͷ Ͱ յ Ε Δ ɺ
͠ ͔ ͢ͷ ͕ ݁ ߏ େ ม
Π ϯ λ ʔ φϧ ͳ A P I Λ ৮ ͬͯ ͍ Δ ͷ
ͤ ͍ ͥ ͍ a re l _ t a b l e ͘ Β ͍
͜ͷίʔυΛྑ͘ݟΔͱɺ༨ܭͳSELECT, JSON.parse͕͋Δ
p re v i e w ͬͯ ͳ ͍
Δ ඞ ཁ ͳ ͍
Slide 119
Slide 119 text
࠷ େ ͷ Χ ϥϜ ͕ S E L E C T ͞ Ε ͳ
͘ ͳ Γ ɺ Ϋ Τ Ϧ ͕ ߴ Խ
Θ Εͯ ͍ ͳ ͍ ͷ ʹ ॏ ͍
J S O N . p a r s e ͕ Β ͳ ͘ ͳ ͬ ͨ
ෆཁͳSELECT, JSON.parseͷআڈ
ϨεϙϯελΠϜ:
7ˠ31ඵ
ͪΌΜͱܭଌΛ͢Δͱɺগ
ͳ͍࿑ྗͰܶతͳޮՌ͕ಘ
ΒΕΔ͜ͱ͋Δ