aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2024-04-22 22:52:54 +0900
committernsfisis <nsfisis@gmail.com>2024-04-25 19:54:33 +0900
commit0ec7e1fbef3c328c6740bd7eddce017d7bee8605 (patch)
treeef767e2f1a9f534e679ef12d43fe54c68cf16baa
parent625e1d18496e787dbd68e9babf4daa1fc1e2f267 (diff)
downloadphpstudy-163-slides-main.tar.gz
phpstudy-163-slides-main.tar.zst
phpstudy-163-slides-main.zip
add slidesHEADmain
-rw-r--r--.gitignore1
-rw-r--r--README.md2
-rw-r--r--slide.pdfbin0 -> 204495 bytes
-rw-r--r--slide.saty88
4 files changed, 86 insertions, 5 deletions
diff --git a/.gitignore b/.gitignore
index 3a108ac..19780ee 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1 @@
-/slide.pdf
/slide.satysfi-aux
diff --git a/README.md b/README.md
index 5bb5b4d..b10ca97 100644
--- a/README.md
+++ b/README.md
@@ -1 +1 @@
-https://phpstudy.connpass.com/event/TODO/
+https://phpstudy.connpass.com/event/314907/
diff --git a/slide.pdf b/slide.pdf
new file mode 100644
index 0000000..ad0bf08
--- /dev/null
+++ b/slide.pdf
Binary files differ
diff --git a/slide.saty b/slide.saty
index 528e69b..543db11 100644
--- a/slide.saty
+++ b/slide.saty
@@ -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};
+ ]);
>
>