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
610
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
590
PHPerだってPHPから「OKグーグル」したい!
hnw
1
2.3k
Other Decks in Technology
See All in Technology
LLMアプリケーション開発におけるセキュリティリスクと対策 / LLM Application Security
flatt_security
7
1.9k
コンテキストエンジニアリングとは? 考え方と応用方法
findy_eventslides
4
900
AI ReadyなData PlatformとしてのAutonomous Databaseアップデート
oracle4engineer
PRO
0
180
BirdCLEF+2025 Noir 5位解法紹介
myso
0
190
10年の共創が示す、これからの開発者と企業の関係 ~ Crossroad
soracom
PRO
1
190
Where will it converge?
ibknadedeji
0
180
SREとソフトウェア開発者の合同チームはどのようにS3のコストを削減したか?
muziyoshiz
1
100
How to achieve interoperable digital identity across Asian countries
fujie
0
120
多野優介
tanoyusuke
1
430
OpenAI gpt-oss ファインチューニング入門
kmotohas
2
970
非エンジニアのあなたもできる&もうやってる!コンテキストエンジニアリング
findy_eventslides
3
910
空間を設計する力を考える / 20251004 Naoki Takahashi
shift_evolve
PRO
3
330
Featured
See All Featured
A designer walks into a library…
pauljervisheath
209
24k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.9k
Navigating Team Friction
lara
189
15k
Docker and Python
trallard
46
3.6k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Git: the NoSQL Database
bkeepers
PRO
431
66k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
The Cost Of JavaScript in 2023
addyosmani
53
9k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Context Engineering - Making Every Token Count
addyosmani
5
180
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
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.ʣ͚ʹରԠ͍ͨ͠