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
PHPのARM向け最適化の中身を見てみた
Search
hnw
March 25, 2023
Technology
0
550
PHPのARM向け最適化の中身を見てみた
PHPerKaigi 2023 (2023/03/25) 発表資料
hnw
March 25, 2023
Tweet
Share
More Decks by hnw
See All by hnw
PHPのimmutable arrayとは
hnw
1
570
PHPerだってPHPから「OKグーグル」したい!
hnw
1
2.3k
Other Decks in Technology
See All in Technology
MobileActOsaka_250704.pdf
akaitadaaki
0
120
MUITにおける開発プロセスモダナイズの取り組みと開発生産性可視化の取り組みについて / Modernize the Development Process and Visualize Development Productivity at MUIT
muit
1
16k
LLM時代の検索
shibuiwilliam
1
120
開発生産性を組織全体の「生産性」へ! 部門間連携の壁を越える実践的ステップ
sudo5in5k
2
7.1k
自律的なスケーリング手法FASTにおけるVPoEとしてのアカウンタビリティ / dev-productivity-con-2025
yoshikiiida
1
17k
Getting to Know Your Legacy (System) with AI-Driven Software Archeology (WeAreDevelopers World Congress 2025)
feststelltaste
1
130
AIの全社活用を推進するための安全なレールを敷いた話
shoheimitani
2
510
Enhancing SaaS Product Reliability and Release Velocity through Optimized Testing Approach
ropqa
1
230
2025 AWS Jr. Championが振り返るAWS Summit
kazukiadachi
0
110
AI専用のリンターを作る #yumemi_patch
bengo4com
5
4.3k
タイミーのデータモデリング事例と今後のチャレンジ
ttccddtoki
6
2.4k
KubeCon + CloudNativeCon Japan 2025 Recap
ren510dev
1
380
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
KATA
mclloyd
30
14k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.5k
How to Ace a Technical Interview
jacobian
278
23k
Being A Developer After 40
akosma
90
590k
Visualization
eitanlees
146
16k
Writing Fast Ruby
sferik
628
62k
Typedesign – Prime Four
hannesfritz
42
2.7k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
Code Reviewing Like a Champion
maltzj
524
40k
Raft: Consensus for Rubyists
vanstee
140
7k
Transcript
Exploring ARM64 optimization in PHP 7.4+ 1)1ͷ"3.͚࠷దԽͷ தΛݟͯΈͨ 1)1FS,BJHJ
ൃදࢿྉ !IOX
ࣗݾհ ❖ !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ʣ VQ VQ
ϕϯνϚʔΫςετ͕͍͚ͩͰʁ ❖ ࣮ΞϓϦͰ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ʣΛ৭͝ͱʹॲཧ͢Δ
CBTF@FODPEFͷߴԽͷ༰ ❖ "3.͚࠷దԽͷதͰ໘ന͔ͬͨͷΛݸհ͠·͢ ❖ ߴԽରɿCBTF@FODPEF ❖ CJUͷόΠφϦΛCJUͷ"4$**ʹม͢Δॲཧ ❖ ߴԽͷख๏ɿ/&0/໋ྩΛͬͯόΠτΛҰׅม
❖ ഒͷߴԽ
CBTF@FODPEFͷߴԽͷ༰ ❖ WFDUPS WFDUPSʹಛԽͨ͠MPBETUPSF໋ྩΛ༗ޮ׆༻͍ͯ͠Δ
·ͱΊ ❖ "841)1ʹ"3.͚࠷దԽΛೖΕͨɺ1)1͔Βར༻Մೳ ❖ ࣗࣾͷϏδωεΛޙԡ͢͠Δ044DPOUSJCVUFɺ໘ന͍Ͱ͢Ͷ ❖ "3.͚ͷ࠷దԽ/&0/໋ྩΛར༻͢Δͷ͕ଟ͔ͬͨ ❖ ߴԽͰ͖Δؔɾॲཧଞʹ͋Γͦ͏ ❖
Έͳ͞Μ͍͖ͬͯ·͠ΐ͏ ❖ ݸਓతʹ3BTQCFSSZ1JʢCJU"3.ʣ͚ʹରԠ͍ͨ͠