Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
TruffleでPHPぽい言語を実装したら爆速だった話 / truffle php at jjug night seminar
Naoki Kishida
February 27, 2019
Technology
3
2k
TruffleでPHPぽい言語を実装したら爆速だった話 / truffle php at jjug night seminar
TruffleでPHPを実装したら爆速だった話です
Naoki Kishida
February 27, 2019
Tweet
Share
More Decks by Naoki Kishida
See All by Naoki Kishida
脱オブジェクト指向講座(5分LT資料)
kishida
8
11k
プロになるJavaでチート能力を手にして完全勝利
kishida
0
580
Java 18新機能とJava 19以降に入りそうな機能
kishida
1
300
教える側が知らないプログラミングの3つのこと
kishida
7
14k
Java 2021
kishida
1
730
Java16新機能-言語とAPIを中心に- / Java 16 new features - about lang and API -
kishida
7
2.3k
Alpine対応のJava16で最小Docker Imageをつくる / Make minimum Docker Image with Java 16 on Alpine
kishida
0
730
Javaが最強JVM言語になる日はくるのか / Will Java become strongest JVM language
kishida
2
2.8k
Java 15を軽く紹介 / Java 15 at a glance
kishida
1
100
Other Decks in Technology
See All in Technology
LINEのData Platform室が実践する大規模分散環境のCapacity Planning
line_developers
PRO
0
380
Poolにおける足を止めないシステム基盤構築
winebarrel
3
770
LINE WORKS API 2.0について
mmclsntr
0
110
読者のことを考えて書いてみよう / Write with your reader in mind
line_developers
PRO
3
350
Adopting Kafka for the #1 job site in the world
ymyzk
1
390
Puny to Powerful PostgreSQL Rails Apps
andyatkinson
PRO
0
280
Dagu | オンプレ向けワークフローエンジン(WebUI 同梱)
yohamta
0
150
Oracle Content Management サービス概要 (2022年5月版)
oracle4engineer
PRO
0
110
技術広報の役割を定義してみた 2022年春
afroscript
3
2.4k
プロダクトグロースと技術のベースアップを両立させるRettyのアプリ開発スタイル / Achieve Product Growth and Tech Update
imaizume
1
290
Nutanix_Meetup_20220511
keigotomomatsu
0
150
キャッチアップ Android 13 / Catch up Android 13
yanzm
2
1.1k
Featured
See All Featured
Making Projects Easy
brettharned
98
4.3k
Clear Off the Table
cherdarchuk
79
280k
Building Better People: How to give real-time feedback that sticks.
wjessup
343
17k
Web development in the modern age
philhawksworth
197
9.3k
Bootstrapping a Software Product
garrettdimon
295
110k
Optimizing for Happiness
mojombo
365
63k
A Modern Web Designer's Workflow
chriscoyier
689
180k
Faster Mobile Websites
deanohume
294
28k
Build your cross-platform service in a week with App Engine
jlugia
219
17k
Stop Working from a Prison Cell
hatefulcrawdad
261
17k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
29
4.3k
A better future with KSS
kneath
225
15k
Transcript
TrufflePHP JJUG 2019/2/27 LINE Fukuoka
• • LINE Fukuoka •
• @kis
Truffle •
Truffle • ()
Truffle
PHP • jparsec ( ) • https://github.com/jparsec/jparsec/ •
• +-<>.( ) • • • if • echo https://github.com/kishida/phpparser
<?php function fib($n) { if ($n
< 2) { return $n; } return fib($n - 1) + fib($n - 2); } echo "fib:".fib(31); echo "¥n";
(1/6) • Node
(2/6) • • (Specialization)
(3/6) • CallNode
(4/6) •
(5/6) • NodeDirectCallNodeCompilerAssertsGraal • Java
(6/6) • 5; • 0:, 4 %)5210:, 69; •
return=-2/ goto(JVM%)) jmp(*!' +) ReturnException #+&"$(87 resultObject <3.
<?php function fib($n) { if ($n < 2) {
return $n; } return fib($n - 1) + fib($n - 2); } $start = microtime(1); echo "fib:".fib(31); echo "¥n"; echo "time:".(microtime(1) - $start); echo "¥n"; fib(31);fib(31);fib(31);fib(31);fib(31); $start = microtime(1); echo "fib:".fib(31); echo "¥n"; echo "time:".(microtime(1) - $start); echo "¥n";
• (interpreter) on JDK 11 • Truffle
JDK 11 • Truffle GraalVM CE • Truffle GraalVM CE • Truffle GraalVM EE • Truffle GraalVM EE • PHP 5.6 • PHP 7.3
(JIT) • PHP 7.3PHP5.63 • PHP7.37 • Truffle+GraalVM
CEPHP7.3 • Truffle+GraalVM EEPHP7.32 • GraalVM CE PHP7.32 • GraalVM EE PHP7.34
• JIT • •
• EE PHP7.3 • CE PHP7.3
• PHP # &!"' • %
• • EE$CE% <?php function fib($n) { if ($n < 2) { return $n; } return fib($n - 1) + fib($n - 2); } echo "fib:".fib(31); echo "¥n";
• Real$) "UserCPU! " • JVMUser" ' •
( CPU" ' • GraalVMRealUser & • Graal#% ( CPU"
• PHPPHP3PHP4PHP5PHP7 '5# !"(PHP6&8) • (0, +*:% PHP7941
• "$!(03 • . '5# (0,6 -2 • 5/$7)#(Specialization)
• GraalVM • Truffle • "
# SimpleLanguage • Writing a Language in Truffle • gitter ! % • Graal&$