Page 1
『えこひいき』される関数たち
Functions Specialized by Zend Engine
pixiv Inc.
USAMI Kenta
2022-12-20 PHP勉強会@東京
公開日:
by USAMI Kenta@tadsan
に東京都渋谷区道玄坂のGMO Yours フクラスで開催された『第147回 PHP勉強会@東京』でライトニングトーク(5分)として発表しました。
2022-12-20 PHP勉強会@東京
お前誰よ
Zend Engineってなあに
自分のことをCPUだと思い込んだ象
オペコード
<?php
echo 1;
ECHO 1
<?php
echo 'foo';
ECHO 'foo'
<?php
print 'foo';
ECHO 'foo'
<?php
echo 1 + 2;
ECHO 3
<?php$a = 1;echo $a + 2;
ASSIGN !0, 1 ADD ~2 !0, 2 ECHO ~2
opcodeでおk
<?php echo "foo";
ECHO 'foo'
なんでこんなことするの
PHP高度な構文解析が必要な高級なシンタックス
opcode構文解析不要なシンプルな命令セット
分けて開発することで最適化しやすくなる
これを極めればパフォーマンス改善に役立つのか?
<?php
var_dump("foo");
INIT_FCALL 'var_dump'SEND_VAL 'foo'DO_ICALL
関数呼び出しは関数呼び出しに
!?
<?php
echo is_int('foo');
TYPE_CHECK 16 ~0 'foo'ECHO ~0
!?
<?php
ECHO 3
echo strlen('foo');
『えこひいき』とは何だったのか
一部の関数呼び出しは特別な最適化が施される
