Files
hakmem/docs/analysis/PHASE39_FAST_V3_GATE_CONSTANTIZATION_INSTRUCTIONS.md

82 lines
3.1 KiB
Markdown
Raw Normal View History

# Phase 39 — FAST v3: Gate Function 定数化BENCH_MINIMAL の固定税刈り)
## 目的1行
FAST build`HAKMEM_BENCH_MINIMAL=1`)の hot path に残る **lazy-init gate**`static int=-1` + `getenv()`)を **compile-time constant** にして、固定税を削る。
## 背景
- Phase 35-A で gate function overhead の削減が atomic prune より ROI が高いことを確認したGO +4.39%)。
- Phase 37 で runtime gatelazy-initを Standard に持ち込むと税が勝つことを確認したNO-GO
- よって **FAST でのみ**「定数化」を進めるのが安全で勝ち筋。
## 方針Box Theory
- “箱”は増やさず、既存 gate を **`#if HAKMEM_BENCH_MINIMAL`** で定数化する(戻せる)。
- Standard/OBSERVE の挙動は **変更しない**
- link-out / 物理削除はしないlayout/LTO で符号反転する)。
## 対象(優先順)
### A) malloc hot path gate毎 alloc
ファイル: `core/front/malloc_tiny_fast.h`
1. `front_gate_unified_enabled()` を FAST で固定 `1`
2. `alloc_dualhot_enabled()` を FAST で固定 `0`
実装方針:
- 関数定義の内部を `#if HAKMEM_BENCH_MINIMAL` で分岐し、FAST は return constant のみ。
- Standard/OBSERVE は現状の lazy-init を維持A/B の自由度を残す)。
### B) free dispatcher 内の gate毎 free
ファイル: `core/box/hak_free_api.inc.h`
1. `HAKMEM_BENCH_FAST_FRONT` ブロックを FAST で固定 OFF丸ごと compile-out でも可)
2. `g_v3_enabled`v3 snapshot free stubブロックを FAST で固定 OFF丸ごと compile-out
3. `g_free_dispatch_ssot``getenv("HAKMEM_FREE_DISPATCH_SSOT")`)を FAST で固定 ON
注意:
- `g_free_dispatch_ssot` の “正” は、現行プリセットが最適化経路を採用している前提で **ON** とする。
- もし health/profile で SSOT=0 依存が残っていたら、まずプリセットを正に合わせるFAST は “性能測定の正”)。
### C) stats gate毎回呼ばれているなら
ファイル: `core/box/free_dispatch_stats_box.h`
- `free_dispatch_stats_enabled()` を FAST で固定 `false`
- `FREE_DISPATCH_STAT_INC(...)` が hot entry で呼ばれている場合、lazy-init を消せる。
※ 他にも hot で呼ばれている stats gate があれば同じパターンで追加(ただし “実行確認” を先に)。
## 実装手順(小パッチ順)
1. Amallocを先に実装影響範囲が狭い
2. Bfreeを実装影響範囲が広いので health を必ず回す)
3. Cstatsを必要に応じて追加
## A/B判定
### ベースラインFAST v2
- `make perf_fast`
### 変更後FAST v3
- `make perf_fast`
### 判定build-level
- **GO**: Mixed 10-run mean **+0.5% 以上**
- **NEUTRAL**: **±0.5%**
- **NO-GO**: **-0.5% 以下**
※ NO-GO の場合は即 revertPhase 22-2 の教訓)。
## 可視化(最小)
- ベンチ結果mean/median`docs/analysis/PHASE39_FAST_V3_GATE_CONSTANTIZATION_RESULTS.md` に追記
- `docs/analysis/PERFORMANCE_TARGETS_SCORECARD.md` の FAST build 履歴を更新