Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PHPのARM向け最適化の中身を見てみた

hnw
March 25, 2023

 PHPのARM向け最適化の中身を見てみた

PHPerKaigi 2023 (2023/03/25) 発表資料

hnw

March 25, 2023
Tweet

More Decks by hnw

Other Decks in Technology

Transcript

  1. Exploring ARM64 optimization in PHP 7.4+
    1)1ͷ"3.޲͚࠷దԽͷ

    த਎ΛݟͯΈͨ
    1)1FS,BJHJ

    ൃදࢿྉ
    !IOX

    View Slide

  2. ࣗݾ঺հ
    ❖ !IOX
    ❖ ॴଐɿ,-BCגࣜձࣾ
    ❖ $50ͯ͠·͢
    ❖ 1)1ຊମͷ$ιʔείʔυΛಡΉͷ͕झຯ
    ❖ 1)1ຊମͷόάΛ໿݅ใࠂ

    View Slide

  3. Έͳ͞Μ
    "3.Πϯελϯε࢖ͬͯ·͢ʁ

    View Slide

  4. ࠓ΍"3.͸਎ۙͳબ୒ࢶ
    ❖ "84͸(SBWJUPOʢಠࣗ"3.ܥ$16ʣΠϯελϯεΛఏڙ͍ͯ͠Δ
    ❖ ίετύϑΥʔϚϯεʹ༏Ε͍ͯΔ
    ❖ ಉఔ౓ͷੑೳͷNH "3.
    ͕N *OUFM
    ΑΓ͍҆
    ※ ౦ژϦʔδϣϯͷΦϯσϚϯυΠϯελϯεͷՁ֨Ͱൺֱ
    0''

    View Slide

  5. ࠓ͙͢"3.Λ࠾༻͢΂͖͔ʁ
    ❖ ຊ౰ʹ҆͘ͳΔ͔͸ཁݕ౼
    ❖ ΞϓϦέʔγϣϯʹΑͬͯ͸"3.ͷํ͕஗͍͜ͱ΋͋Δ
    ❖ ֤छ044ͷ࠷దԽ͸*OUFMܥͷํ͕ਐΜͰ͍Δ
    ❖ "3.޲͚࠷దԽͷਐߦͱ$16։ൃͷਐߦͰঢ়گ͸վળ͍ͯ͘͠͸ͣ
    ❖ 1)1ʹ͍ͭͯ͸"84ࣾһ͕"3.Ή͚࠷దԽΛຊମʹDPOUSJCVUF
    ❖ 1)1ʢ೥ϦϦʔεʣҎ߱Ͱར༻Ͱ͖Δ

    View Slide

  6. "3.্ͷ1)1͸଎͍ͷ͔ʁ
    ❖ ͔֬ʹ1)1͔Β"3.͚ͩ଎͘ͳͬͯΔʢ.H͕(SBWJUPOʣ
    VQ
    VQ

    View Slide

  7. ϕϯνϚʔΫςετ͕଎͍͚ͩͰ͸ʁ
    ❖ ࣮ΞϓϦͰ΋1)1͔Β"3.͚ͩ଎͘ͳͬͯΔ
    VQ

    View Slide

  8. ❖ Ճݮࢉԋࢉࢠɺ࿈૝഑ྻͷ಺෦ॲཧɺؔ਺ݸΛੑೳվળ
    1)1ͷ"3.Ή͚࠷దԽͷத਎
    Function Speedup ࠷దԽͷத਎
    inc/dec 1.5x ੔਺Φʔόʔϑϩʔݕग़ߴ଎Խ
    add/sub 1.82x ੔਺Φʔόʔϑϩʔݕग़ߴ଎Խ
    hash_init 1.61x /&0/໋ྩར༻
    hash_func 1.72x ໋ྩϨϕϧฒྻੑվળ
    crc32 29x "3.໋ྩར༻
    strrev 7.8x /&0/໋ྩར༻
    base64 encode 3.5x /&0/໋ྩར༻
    base64 decode 2.15x /&0/໋ྩར༻
    addslashes 2.8x /&0/໋ྩར༻
    stripslashes 4.9x /&0/໋ྩར༻

    View Slide

  9. ࠷దԽͷओ໾͸/&0/໋ྩ
    ❖ /&0/໋ྩʹ"3.ͷ4*.% 4JOHMF*OTUSVDUJPO.VMUJQMF%BUB
    ໋ྩ
    ❖ 4*.%ʹ໋ྩͰෳ਺ͷσʔλʹରͯ͠ಉ͡ॲཧ͕Ͱ͖Δ
    ❖ ߴ଎ͳΜ͚ͩͲ࢖͍ʹ͍͘Ϛγϯޠͷ໋ྩ܈
    ❖ ը૾ॲཧͷߴ଎ԽͳͲ͕యܕతͳϢʔεέʔε

    View Slide

  10. /&0/໋ྩͷయܕతͳར༻ྫ
    ❖ ࿈ଓϝϞϦྖҬʹ͋ΔϐΫηϧσʔλʢ3(#CJUʣΛ৭͝ͱʹॲཧ͢Δ

    View Slide

  11. [email protected]ͷߴ଎Խͷ಺༰

    ❖ "3.޲͚࠷దԽͷதͰ΋໘ന͔ͬͨ΋ͷΛݸ঺հ͠·͢
    ❖ ߴ଎Խର৅ɿ[email protected]
    ❖ CJUͷόΠφϦΛCJUͷ"4$**ʹม׵͢Δॲཧ
    ❖ ߴ଎Խͷख๏ɿ/&0/໋ྩΛ࢖ͬͯόΠτΛҰׅม׵
    ❖ ഒͷߴ଎Խ

    View Slide

  12. [email protected]ͷߴ଎Խͷ಺༰

    ❖ WFDUPS WFDUPSʹಛԽͨ͠MPBETUPSF໋ྩΛ༗ޮ׆༻͍ͯ͠Δ

    View Slide

  13. ·ͱΊ
    ❖ "84͸1)1ʹ"3.޲͚࠷దԽΛೖΕͨɺ1)1͔Βར༻Մೳ
    ❖ ࣗࣾͷϏδωεΛޙԡ͢͠Δ044DPOUSJCVUFɺ໘ന͍Ͱ͢Ͷ
    ❖ "3.޲͚ͷ࠷దԽ͸/&0/໋ྩΛར༻͢Δ΋ͷ͕ଟ͔ͬͨ
    ❖ ߴ଎ԽͰ͖Δؔ਺ɾॲཧ͸ଞʹ΋͋Γͦ͏
    ❖ Έͳ͞Μ΍͍͖ͬͯ·͠ΐ͏
    ❖ ݸਓతʹ͸3BTQCFSSZ1JʢCJU"3.ʣ޲͚ʹରԠ͍ͨ͠

    View Slide