#あすみかんの上にあすみかん

#たのしいことしかかかないことをここに決意します

来る新 JIT エンジンについて知った気になる をみたよ / asumikam #phpcon_odawara Advent Calendar

adventar.org

これは、asumikam #phpcon_odawara Advent Calendarの11日目の記事です🎄 本日は「来る新 JIT エンジンについて知った気になる」の感想を書いていきます!

💡 トーク概要・動画 fortee.jp

📖 スライド blog.nsfisis.dev

感想

JITエンジンについて知った気になりたくて登壇をみました。 全然知らない分野だったのですが、登壇内で前提を合わせつつJITエンジンのアップデートを語ってくれてるので、わかりやすかったです! そして、登壇みたらなんかちょっとだけ知った気になれました。

  • 通常のPHPプログラムはPHPプログラム+opcode での実行
  • もっとはやくしたいため、実行時に一部機械語にしてCPUで動かす
  • コンパイルに時間を割きすぎないように&②すべての情報が事前に確定しない→のでどうする?
    • Tracing JIT
    • PHPだとひとまとめにTracing JITとしているが、他の言語だとAdaptive CompilationとTracing JITと分かれていることもあるらしい
      • これおしえてくれるのいまむらさんのホスピタリティだなぁ〜
  • ↑ここまではPHP8.3の話
  • ↓ここからはPHP8.4の話
  • IR(中間表現)というのが入る
    • 以下の課題感を解決するため
  • IRのおかげで、最適化できる&PHPに依存しない構造となれる
    • メンテナンスできる人がより増える

ほぼ、いまむらさんのスライドの生き写しにはなっていますが、自分の頭の整理のために書いてみました。 言われていることはわかったので"知った気になる"な顔して良さそう!!(?)

ただ、「そもそもJITコンパイラ挟むことで遅くなることはないのか?(めちゃくちゃ大量の回数呼び出されてればたしかに速いか)」「IRを挟むことで1つ層が増えているけど逆に遅くならないのかな?」とか、動かしてないのでわからないことが多かった*1、特に後者の問いは今度いまむらさんに会った時に聞いてみよ〜っと。

参考文献にRFCがを貼っていてくれたのでみにいってみた。

wiki.php.net

Proposed Voting Choicesとかすごい。ほぼみんなのひとがPHP8.0で賛成だったのですね〜。

PRもみにいってみたのですが -> JIT for PHP based on DynAsm by dstogov · Pull Request #3792 · php/php-src · GitHub、差分エグい、これ、書く人もレビューする人も・・・すごい・・・いみわかんない・・・いみわかるけど・・・。 この超人的なPRのおかげでPHPが速くなっているので、ありがたい限りですヮ............

wiki.php.net

こちらもProposed Voting Choicesめちゃくちゃ賛成なのですね。はえ

PRもみにいってみたのですが -> A new PHP JIT implementation based on IR JIT framework by dstogov · Pull Request #12079 · php/php-src · GitHub ハヮヮ.......... dstogov さん、すごいですね........

nsfisisさん、登壇ありがとうございました

いまむらさんの発表はいつでも新しい衝撃とまだまだエグい壁あるよなあ、という鈍痛をわたしに与えてくれます。 で、いまむらさんの良いところは「ここどゆこと???」って聞くと、めちゃくちゃ教えてくれるんすよね〜〜。 最近はいまむらさんにわからないを表明するのこわくなくなってきた関係なので()、これからもいろいろ教えてもらっちゃお〜。

刺激的な発表、ありがとうございました!!

▲ あと全然関係ないけどこれすき

*1:???「やればえぇやろ」←ハァハァ....ハァ...ミ"....