diff options
| author | nsfisis <nsfisis@gmail.com> | 2024-04-22 22:52:54 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2024-04-25 19:54:33 +0900 |
| commit | 0ec7e1fbef3c328c6740bd7eddce017d7bee8605 (patch) | |
| tree | ef767e2f1a9f534e679ef12d43fe54c68cf16baa | |
| parent | 625e1d18496e787dbd68e9babf4daa1fc1e2f267 (diff) | |
| download | phpstudy-163-slides-main.tar.gz phpstudy-163-slides-main.tar.zst phpstudy-163-slides-main.zip | |
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | README.md | 2 | ||||
| -rw-r--r-- | slide.pdf | bin | 0 -> 204495 bytes | |||
| -rw-r--r-- | slide.saty | 88 |
4 files changed, 86 insertions, 5 deletions
@@ -1,2 +1 @@ -/slide.pdf /slide.satysfi-aux @@ -1 +1 @@ -https://phpstudy.connpass.com/event/TODO/ +https://phpstudy.connpass.com/event/314907/ diff --git a/slide.pdf b/slide.pdf Binary files differnew file mode 100644 index 0000000..ad0bf08 --- /dev/null +++ b/slide.pdf @@ -17,6 +17,10 @@ let mid-textbox ?:size-opt it = let size = Option.from 24pt size-opt in FigBox.textbox?:(set-font-size size) it +let small-textbox ?:size-opt it = + let size = Option.from 16pt size-opt in + FigBox.textbox?:(set-font-size size) it + let with-frame figbox = figbox |> FigBox.hvmargin 16pt |> FigBox.frame 2pt Color.black @@ -40,10 +44,10 @@ document '< +make-title(| title = { - |TODO + |Tracing JIT の発動条件 |}; author = {|nsfisis (いまむら)|}; - date = {|第TODO回PHP勉強会@東京|}; + date = {|第163回PHP勉強会@東京|}; |); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -66,8 +70,86 @@ document '< %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +frame{PHPカンファレンス小田原}< + +fig-center(vconcat [ + gap 60pt; + big-textbox{来る新 JIT エンジンについて}; + ]); + +fig-center(vconcat [ + gap 30pt; + big-textbox{知った気になる}; + ]); + > + + +frame{おさらい}< + +fig-center(vconcat [ + gap 30pt; + big-textbox{Tracing JIT とは?}; + ]); + > + + +frame{おさらい}< + +fig-center(vconcat [ + gap 30pt; + big-textbox{Tracing JIT とは?}; + ]); + +fig-center(vconcat [ + gap 30pt; + mid-textbox{実行された opcode/operand を記録して (トレース)}; + gap 20pt; + mid-textbox{その情報を使って opcode を機械語に変換する}; + ]); + > + + +frame{おさらい}< + +fig-center(vconcat [ + gap 30pt; + big-textbox{Tracing JIT とは?}; + ]); + +fig-center(vconcat [ + gap 30pt; + mid-textbox{実行された opcode/operand を記録して (トレース)}; + gap 20pt; + mid-textbox{その情報を使って opcode を機械語に変換する}; + ]); + +fig-center(vconcat [ + gap 40pt; + mid-textbox{毎回実行するとオーバヘッドが大きすぎる}; + ]); + > + + +frame{Tracing JIT 詳細}< + +listing{ + * 実行詳細 + ** PHP スクリプトにカウンタ機構を埋め込む + *** 何度も実行される関数・ループを記録 + ** 何回も実行されると、実行パターンの記録 (トレース) を開始 + ** トレースを元に JIT コンパイル + } + > + + +frame{Tracing JIT 詳細}< + +listing{ + * 実行詳細 + ** PHP スクリプトにカウンタ機構を埋め込む + *** 何度も実行される関数・ループを記録 + ** 何回も実行されると、実行パターンの記録 (トレース) を開始 + ** トレースを元に JIT コンパイル + * 制御するオプション + ** \code(`opcache.jit_hot_loop`); (デフォルト値: \code(`64`);) + *** 64 回実行されたループは JIT コンパイル + ** \code(`opcache.jit_hot_func`); (デフォルト値: \code(`127`);) + *** 127 回実行された関数は JIT コンパイル + } + > + +frame{まとめ}< - +p{TODO} + +fig-center(vconcat [ + gap 30pt; + ex-big-textbox{ムズい!}; + gap 30pt; + big-textbox{バス係数 = 1}; + ]); > > |
