PHPerKaigi 2023 (2023/03/25) 発表資料
Exploring ARM64 optimization in PHP 7.4+1)1ͷ"3.͚࠷దԽͷ தΛݟͯΈͨ1)1FS,BJHJ ൃදࢿྉ!IOX
View Slide
ࣗݾհ❖ !IOX❖ ॴଐɿ,-BCגࣜձࣾ❖ $50ͯ͠·͢❖ 1)1ຊମͷ$ιʔείʔυΛಡΉͷ͕झຯ❖ 1)1ຊମͷόάΛ݅ใࠂ
Έͳ͞Μ"3.Πϯελϯεͬͯ·͢ʁ
ࠓ"3.ۙͳબࢶ❖ "84(SBWJUPOʢಠࣗ"3.ܥ$16ʣΠϯελϯεΛఏڙ͍ͯ͠Δ❖ ίετύϑΥʔϚϯεʹ༏Ε͍ͯΔ❖ ಉఔͷੑೳͷNH "3.͕N *OUFMΑΓ͍҆※ ౦ژϦʔδϣϯͷΦϯσϚϯυΠϯελϯεͷՁ֨Ͱൺֱ0''
ࠓ͙͢"3.Λ࠾༻͖͔͢ʁ❖ ຊʹ҆͘ͳΔ͔ཁݕ౼❖ ΞϓϦέʔγϣϯʹΑͬͯ"3.ͷํ͕͍͜ͱ͋Δ❖ ֤छ044ͷ࠷దԽ*OUFMܥͷํ͕ਐΜͰ͍Δ❖ "3.͚࠷దԽͷਐߦͱ$16։ൃͷਐߦͰঢ়گվળ͍ͯͣ͘͠❖ 1)1ʹ͍ͭͯ"84ࣾһ͕"3.Ή͚࠷దԽΛຊମʹDPOUSJCVUF❖ 1)1ʢϦϦʔεʣҎ߱Ͱར༻Ͱ͖Δ
"3.্ͷ1)1͍ͷ͔ʁ❖ ͔֬ʹ1)1͔Β"3.͚ͩ͘ͳͬͯΔʢ.H͕(SBWJUPOʣVQVQ
ϕϯνϚʔΫςετ͕͍͚ͩͰʁ❖ ࣮ΞϓϦͰ1)1͔Β"3.͚ͩ͘ͳͬͯΔVQ
❖ Ճݮࢉԋࢉࢠɺ࿈ྻͷ෦ॲཧɺؔݸΛੑೳվળ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/໋ྩར༻
࠷దԽͷओ/&0/໋ྩ❖ /&0/໋ྩʹ"3.ͷ4*.% 4JOHMF*OTUSVDUJPO.VMUJQMF%BUB໋ྩ❖ 4*.%ʹ໋ྩͰෳͷσʔλʹରͯ͠ಉ͡ॲཧ͕Ͱ͖Δ❖ ߴͳΜ͚ͩͲ͍ʹ͍͘Ϛγϯޠͷ໋ྩ܈❖ ը૾ॲཧͷߴԽͳͲ͕యܕతͳϢʔεέʔε
/&0/໋ྩͷయܕతͳར༻ྫ❖ ࿈ଓϝϞϦྖҬʹ͋ΔϐΫηϧσʔλʢ3(#CJUʣΛ৭͝ͱʹॲཧ͢Δ
[email protected]ͷߴԽͷ༰ ❖ "3.͚࠷దԽͷதͰ໘ന͔ͬͨͷΛݸհ͠·͢❖ ߴԽରɿ[email protected]❖ CJUͷόΠφϦΛCJUͷ"4$**ʹม͢Δॲཧ❖ ߴԽͷख๏ɿ/&0/໋ྩΛͬͯόΠτΛҰׅม❖ ഒͷߴԽ
[email protected]ͷߴԽͷ༰ ❖ WFDUPS WFDUPSʹಛԽͨ͠MPBETUPSF໋ྩΛ༗ޮ׆༻͍ͯ͠Δ
·ͱΊ❖ "841)1ʹ"3.͚࠷దԽΛೖΕͨɺ1)1͔Βར༻Մೳ❖ ࣗࣾͷϏδωεΛޙԡ͢͠Δ044DPOUSJCVUFɺ໘ന͍Ͱ͢Ͷ❖ "3.͚ͷ࠷దԽ/&0/໋ྩΛར༻͢Δͷ͕ଟ͔ͬͨ❖ ߴԽͰ͖Δؔɾॲཧଞʹ͋Γͦ͏❖ Έͳ͞Μ͍͖ͬͯ·͠ΐ͏❖ ݸਓతʹ3BTQCFSSZ1JʢCJU"3.ʣ͚ʹରԠ͍ͨ͠